Шаблоны проектирования Реальные примеры - PullRequest
0 голосов
/ 21 апреля 2011

Я собираюсь внести некоторые изменения в мой существующий компонент на работе и начинаю видеть преимущества использования шаблонов проектирования.Проблема в том, что у меня есть несколько конкретных примеров, для которых я пытаюсь использовать то, что я изучил в шаблонах проектирования, и у меня возникают проблемы при этом.Вот что я пытаюсь сделать.

У меня есть существующий компонент, который контролирует производительность, скажем, n различных пакетов программного обеспечения, каждый из которых обслуживает определенный тип.т.е. существующий компонент

  • пакет A для типа 1
  • пакет B для типа 2
  • пакет C для типа 3 и т. д. ...

Каждый пакет выполняет некоторые наблюдения за производительностью и имеет свои собственные журналы данных, записи и т. Д. Каждый пакет имеет только один тип.

В будущем у нас может появиться новая функция для

- включая журнал анализа.Это будет иметь журнал данных, который уже существует, и добавить некоторые другие данные поверх этого.-Поддержка нескольких типов для пакета.т. е. пакет A для типа 1, тип 2 (Bitype), пакет B для типа 1, тип 2, тип 3 (tritype)

Глядя на это, я подумал, что здесь может пригодиться шаблон адаптера.Я мог бы использовать существующий компонент в качестве адаптера.Затем выполните новую функцию в классе адаптеров.Моя цель будет заключительным компонентом с 2 добавленными функциями.Поскольку здесь я имею дело с существующим кодом, я думаю, что мне нужно добавить класс адаптера для адаптации новых функций.Но у меня возникают другие мысли, потому что адаптер предназначен для использования одного интерфейса с другим интерфейсом.Здесь у меня есть существующий интерфейс, но у меня еще нет целевого интерфейса.Мне придется создать и адаптер, и цель тоже.Поэтому я в замешательстве, если это определение соответствует моему требованию или нет.

Может ли кто-то, кто имеет некоторый опыт работы с шаблонами проектирования, сделать ваши предложения здесь.Спасибо

конечно.Программное обеспечение для спортсменов.Существующая система отслеживает детали тренировок этих спортсменов.В нем есть такие данные, как журнал тренировок, какие бренды они предпочитают, личные данные и т. Д. Для отдельных спортсменов создан отдельный пакет.Типы спортсменов - теннисист, игрок в гольф, пловец и т. д. Таким образом, спортсмены могут быть только одного типа, либо игроком в теннис, либо игроком в гольф, но не обоими.В будущем будет необходимо включить дополнительные функции: 1. включить журнал производительности (т.е. взять уже существующие журналы и добавить подробности журнала производительности поверх него).2. интересы спортсменов могут совпадать, т. Е. Один спортсмен может участвовать в нескольких видах спорта.одинокий спортсмен мог участвовать в теннисе, золоте и плавании.надеюсь, теперь ясно.

1 Ответ

0 голосов
/ 21 апреля 2011

Я бы создал интерфейс для каждой общей группы информации, а затем внедрил бы их для спортсменов того типа, к которому они могут обратиться.

interface IRunner
{
    int AverageSpeed {get; }

}

interface IBallPlayer
{
    int ShootingSpeed {get; }
}

class TennisPlayer : IBallPlayer;
class FootballPlayer : IRunner, IBallPlayer;

Если это не то, что вы ищете, вы должны быть более конкретными и привести несколько примеров кода, показывающих существующий код, и несколько примеров кода, показывающих, что вы хотите сделать.

Картинка (код) стоит больше тысячи слов.

...