Дизайн шаблон ортогональность - PullRequest
1 голос
/ 20 июля 2009

Читая по шаблонам проектирования, мы обнаружили, что было определено 23 (?) Нечетных шаблона. Я видел несколько совпадений в некоторых (то есть в сборщике и декораторе), которые предлагали бы либо

а. Я не совсем понимаю данные шаблоны и различия между ними

б. Некоторые конструктивные особенности некоторых моделей перекрываются с другими

Разве вся философия шаблонов проектирования не должна реализовывать идею "ортогональности" в наборе известных шаблонов?

Ответы [ 2 ]

3 голосов
/ 20 июля 2009

Не совсем, я не думаю, что какой-либо шаблон дизайна полностью перекрывает другой. Между ними всегда есть различия, объясняющие тот факт, что они не объединены.

Википедия говорит:

alt text

В объектно-ориентированном программировании шаблон декоратор является шаблоном дизайна что позволяет новое / дополнительное поведение быть добавленным в существующий класс динамически.

и

alt text
(источник: wikimedia.org )

Шаблон Builder представляет собой программное обеспечение дизайн шаблона. Намерение состоит в том, чтобы абстрактные этапы построения объекты, так что разные реализации этих шагов могут построить разные представления объекты.

Это не совсем то же самое, хотя и имеет некоторые сходства понятий.

0 голосов
/ 20 июля 2009

Существует буквально неограниченное количество шаблонов дизайна, хотя 23 определяются бандой четырех (GO4). Вы можете свернуть свое собственное и назвать это Джени, если хотите ... если люди примут это, то это на самом деле шаблон дизайна. В зависимости от сочетания технологий вы можете использовать одновременно n шаблонов.

Вот хороший источник для изучения шаблонов в контексте мира .NET (это 99 $, но бесценно):

http://www.dofactory.com/Default.aspx

Что касается перекрытия ... не совсем ... хорошим примером будет MVC (Model View Controller). По сути, он реализован десятками способов, таких как CakePHP, ASP.NET MVC, Spring, Struts и т. Д., Однако у него есть близкий родственник, называемый MVP (Model View Presenter), который никогда не встретится; они имеют много общих аспектов (часть просмотра модели), однако имеют четкие различия.

В любом конкретном проекте разработки вы можете использовать десятки шаблонов проектирования. Например. Шаблон репозитория, MVC, Decorator и т. Д. И т. Д.

...