2013-08-11 2 views
0

У меня есть три устройства, которые имеют разные версии и интерфейсы Run(). Эти устройства могут содержать другую подсистему или могут содержать другие устройства.Объединение композитных и шаблонных шаблонов

Я знаю, что должен использовать Template и Composite. но в шаблоне шаблона мне нужно наследовать device1 device2 и device3 из класса устройства. С другой стороны, в Composite pattern у меня есть устройства, классы CompositeDevice и подсистемы.

Я очень смущен тем, что вы комбинируете эти два шаблона. Какие-либо предложения ?

+0

Не могли бы вы высказать свои первоначальные мысли или ваш первоначальный дизайн/решение? –

ответ

0

Давайте возьмем композитный узор от http://en.wikipedia.org/wiki/Composite_pattern. И Leaf, и Composite наследуются от класса Component. И теперь, чтобы комбинировать шаблон шаблона с композитным шаблоном, все ваши устройства должны наследовать класс Component - это ваши классы Leaf. Наконец, класс Composite может использовать ваши классы листьев.

 Component ---------- 
^^^^   | 
    | | | |   | 
Dev1 Dev2 Dev3 Composite<>-| 

Класс компонента - это интерфейс, содержащий объявление функции Run().

+0

в этом дизайне, могут ли устройства иметь композитное устройство? я имею в виду, что хочу создать dev1, у которого есть dev4. Является ли это возможным? – abby

Смежные вопросы