Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Composite

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

 

Предположим, что имеется некоторая иерархическая структура, произвольной вложенности, например «Проект», состоящий из подпроектов, которые в свою очередь так же могут состоять из подпроектов, а каждый попдпроект состоит из набора задач, длительность которых определена. Предположим, что для класса «Проект», согласно принципам высокого зацепления, необходимо создать метод, позволяющий получить его полную длительность (очевидно состоящию из длительность всех конечных задач, входящих во все подпроекты). Таким образом, относя этот пример к обобщённой модели, очевидно, что задача является аналогом Node, в то время проект (и подпроект как его частный случай) – классом Composite, включающим другие подпроекты и задачи. Выделив общий интерфейс и операцию (operation() – аналог вычисления длительности), можно работать с целым проектом (или с его частями) обобщённым способом через общий интерфейс, при этом, для вызывающего класса совершенно не важно, с чем конкретно осуществляется работа, с Node или с Composite, и если Composite – то неважно какого уровня вложенности. Последним достигается удовлетворение принципа слабой связанности (low coupling).

 

Область применения: шаблон Composite рекомендуется применять в следующих случаях:

  • Имеется компонентная модель древовидной структуры (например текстовый документ, состоящих из параграфов, которые могут иметь подпараграфы, слова, буквы и т.п.);
  • Структура имеет произвольный уровень сложности и по своей природе динамична;
  • Необходимо обеспечить единый подход к работе с компонентами структуры, испольщуя одни и теже операции на всех уровнях иерархии.

10.4.3. Façade

Создание упрощённого интерфейса для группы подсистем или сложной подсистемы.

 

Часто функциональность реализуется в нескольких подсистемах или связанных классах (например domain-model/модель предметной области). Для того, чтобы избавить клиента (или подсистуму/модуль/класс) потребителя от деталей и втунтенней структуры реализации, применяют шаблон Façade, который позволяет скрыть делати структуры и предоставляет потребителям лишь фиксированный набор операций. Это позволяет впоследствии изменять внутреннюю структуру (например проводить рефакторинг (refactoring)) не изменяя и не оказывая влияния на клиентов. Кроме того, можно подменять реализации самого Façade, и, напирмер, в последствии вместо прямых вызовов, применять удалённые вызовы, типа Web Services/SOAP и т.п.

 

Шаблон Façade рекомендуется применять в следующих случаях:

  • Необходимо упростить работу со сложной системой, предоставив в распоряжение пользователя более простой, проблемно-ориентированный интерфейс;
  • Требуется уменьшить зависимость клиентов от подсистем.

 

<== предыдущая лекция | следующая лекция ==>
Adapter | Decorator
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 386; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.