Подтвердить что ты не робот

Знаменитые шаблоны проектирования, которые должен знать программист на С++

Возможный дубликат:
Какие идиомы С++ должны использовать программисты на С++?

После чтения книг, таких как С++ Primer, Effective С++ и TС++ PL, я хочу изучить некоторые важные шаблоны проектирования.

Итак, каковы знаменитые шаблоны дизайна, которые должен знать каждый программист на С++?

4b9b3361

Ответ 1

Очевидным ответом являются модели Ган-Чет-Четыре из знаменитой книги. Это те же шаблоны, которые перечислены повсеместно.

http://en.wikipedia.org/wiki/Design_Patterns

Помимо этого, взгляните на веб-сайт Мартина Фаулера...

http://martinfowler.com/

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

"Уровни Mixin" могут быть интересны для С++. Класс шаблона берет свою базу в качестве параметра шаблона, так что шаблон может использоваться для добавления той же функциональности ко многим различным классам или в виде композиционного метода, позволяющего легко включать/исключать различные функции для библиотеки. Иногда также используется любопытно повторяющийся шаблонный трюк (исходная база является окончательным полностью составленным классом), так что различные уровни mixin могут выполнять некоторую степень "отражения", так что промежуточные методы могут быть определены в терминах полностью скомпонованных типы членов и т.д. Конечно, это может быть немного склонно к неразрешимым циклическим зависимостям, если вы не будете осторожны.

http://portal.acm.org/citation.cfm?id=505148

Ответ 2

С++ - конкретные: RAII и PIMPL.

Ответ 3

В каком-то конкретном порядке паттерны "Банды четырех", которые я вижу и чаще всего использую, вероятно, следующие:

  • композитный
  • Шаблонный метод
  • Абстрактная Фабрика
  • Синглтон (очень ненавистный, но везде)
  • посетитель
  • строитель
  • полномочие

Ответ 5

Модель мышления. Это серебряная пуля.

Ответ 6

Я предлагаю прочитать Head First Design Patterns. Это весело читать, и вы узнаете о многих общих шаблонах дизайна.