Когда использовать шаблон дизайна?

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

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

Например, если вы выполняете оператор switch для определения того, какой объект вам нужно создать, вы, вероятно, захотите использовать шаблон дизайна factory. Таким образом, оператор switch в этом случае является "сигнальным звонком" для использования шаблона factory.

Итак, знаете ли вы больше "будильников", чтобы определить шаблон дизайна?

Ответ 1

Для начала просто загляните на эту страницу: http://codebetter.com/jeremymiller/2006/04/11/six-design-patterns-to-start-with/

В то время как Джереми здесь имеет дело с несколькими наборами шаблонов, вы должны прочитать эти статьи, а затем следовать этому: http://codebetter.com/jeremymiller/2005/09/01/learning-about-design-patterns/

Также используйте ссылки на эту статью (особенно интервью Эрика Гамма), и вы должны быть установлены.

Ответ 2

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

Шаблоны проектирования призваны помочь вам решить структурные проблемы, не разрабатывайте приложение, чтобы использовать шаблоны проектирования.

Ответ 3

Изучите их, и вы медленно сможете изменить и выяснить, когда их использовать. Начните с чего-то простого, как шаблон singleton:)

если вы хотите создать один экземпляр объекта и просто ОДИН. Вы используете шаблон singleton. Скажем, вы делаете программу с объектом опций. Вы не хотите, чтобы некоторые из них были глупыми. Синглтон уверен, что никогда не будет больше одного. Шаблон Singleton прост, используется много и действительно эффективен.

Ответ 4

Я полностью согласен с @Peter Расмуссеном.

Шаблоны проектирования обеспечивают общее решение часто возникающей проблемы проектирования.

Я хотел бы, чтобы вы следовали ниже.

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

Полезные ссылки:

sourcemaking: объясняет цель, структура и контрольный список красиво на нескольких языках, включая С++ и Java

wikipedia: Объясняет структуру, диаграмму UML и рабочие примеры на нескольких языках, включая С# и Java.

Контрольный список и Правила большого пальца в каждом sourcemakding design-pattern alram bell, которого вы ищите.

Ответ 5

Хотя старый поток, если вы ищете что-то в .NET, используйте эту чрезвычайно полезную статью .NET Design Patterns в С#, которая показывает как использовать их в реальном мире. НТН!