Какой шаблон дизайна вы считаете наиболее популярным?
Какой шаблон дизайна вы считаете наиболее популярным?
Ответы:
Я уверен, что наиболее распространенным является «Большой шарик грязи». К сожалению для всех нас.
http://en.wikipedia.org/wiki/Big_ball_of_mud
MVC и его вариации, безусловно, один из лучших шаблонов дизайна.
Если вы говорите о шаблонах проектирования Gang-of-Four, я бы сказал « Синглтон» . Это действительно печальное положение вещей - почти как программисты слышат о магии шаблонов проектирования, а затем просто останавливаются после первого.
Если вы говорите о шаблонах архитектурного стиля (другими словами, шаблонах проектирования, которые охватывают несколько классов или слоев), я бы сказал MVC . Несколько других популярных - это шаблон репозитория и сервис-локатор .
наблюдатель
Если вы когда-либо использовали событие. Вы использовали Observer.
декоратор
Добавьте функциональность к объекту во время выполнения посредством композиции. Мой личный фаворит.
Изменить: Также Фабрика , вероятно, является одним из самых распространенных.
Фасад
Подумайте о любом интерфейсе REST, таком как Twitter или SO API. Он скрывает кучу серверных вещей, которые, по крайней мере в случае с твиттерами, могут быть ужасно сложными.
Меня волнует, в каких твитах db таблицы @ apklusk хранятся? А что у него быстрый кеш? И что у @shemnon такая низкая читаемость, что твиты всегда не запоминаются? Это магия фасада.
Шаблон стратегии
Если вы когда-либо использовали внедрение зависимостей, вы использовали шаблон стратегии.
Наряду с моим предыдущим ответом, я собираюсь добавить новый, с которым я столкнулся сегодня, от моего зверя унаследованного проекта:
Копировать вставить
Во время отладки я наткнулся на фрагмент кода, вызывающий 2 функции с одинаковыми именами:
if(x)
Func1
else
Func2
Func1 и Func2 имели одинаковые параметры. Я вытащил их и показал, что они на 100% одинаковы, за исключением того, что Func1 вызывает Func3, а Func2 вызывает Func4. Я вытащил их и показал их. 100% то же самое, за исключением 1 строки. Поэтому предыдущий программист решил скопировать и вставить две 50-строчные вложенные функции вместо добавления параметра флага в две частные функции, используемые ровно в 1 месте. Это заставляет меня хотеть плакать.
Говоря о шаблонах проектирования Gang-of-Four, я не могу представить программу, которая не использует шаблон Observer. Кроме того, как упоминал Жако, синглтон также широко используется, к сожалению, он стал молотом (любой программист использует его, даже если он не нужен полностью).
$_SESSIONпеременной PHP .
переводчик
Редко применяется, часто используется. Селекторы XPATH, XSLT, Regex, jQuery и т. Д.
Я удивлен, что никто еще не сказал "Строитель". Или «Адаптер». Они, вероятно, не такие экзотические, как некоторые из упомянутых, но я использую их все время. Фабрика и Абстрактная Фабрика также очень распространены (но они уже заняты).
Я не думаю, что это указано в GoF, но я постоянно использую его варианты.
На уровне разработки программного обеспечения я бы сказал, что Composite, Strategy и Template (и, в меньшей степени, Factory) используются наиболее широко. В течение последнего десятилетия мы видели предпочтение композиции перед наследованием при построении наших систем с использованием ОО-дизайна. В результате комбинация только что упомянутых моделей играет гораздо более важную роль, чем все другие ИМО.
Архитектурно, я бы поспорил о MVC на предприятии и о шаблонах, основанных на конечных автоматах, на внедренной стороне вещей.