Если у меня есть ограниченное время, чтобы выучить несколько шаблонов дизайна, какие мне следует изучить? - PullRequest
12 голосов
/ 23 мая 2009

Если у меня ограниченное время, но я хочу начать изучать несколько шаблонов проектирования, какие из них мне следует изучить в первую очередь?

Ответы [ 13 ]

19 голосов
/ 23 мая 2009

Я бы предложил Инверсию Контроля / Инъекцию Зависимости. Это очень удобно при модульном тестировании, поскольку позволяет вам предоставлять фиктивные зависимости для тестируемого класса. Прокси также очень полезен при переносе запечатанного класса, чтобы сделать его более пригодным для использования в сценариях тестирования.

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

7 голосов
/ 23 мая 2009

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

6 голосов
/ 23 мая 2009

Ваш вопрос похож на вопрос: «Я хочу выучить C #, но у меня есть время, чтобы выучить несколько ключевых слов. Какие из них мне следует изучить?»

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

Начните с этого списка и книги Head First Design Patterns , ранее упомянутой здесь. Узнайте немного обо всех из них. И не думайте о том, что у вас нет времени - делайте время! Не посещайте FaceBook пару дополнительных ночей или пропустите повторный запуск Star Trek или два.

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

6 голосов
/ 23 мая 2009

Шаблоны проектирования - это не та тема, которую вы быстро начинаете читать и изучать. Вам нужно будет выполнить много упражнений, а затем применить полученные знания в реальных сценариях. Если ваше время действительно так ограничено, то вы можете тратить его впустую. Я предлагаю книгу Head First Design Patterns , которая превосходна.

Но ваши знания ОО должны быть на достаточно высоком уровне для начала.

4 голосов
/ 23 мая 2009

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

Я бы предложил прочитать Оглавление, а затем прочитать резюме каталога образцов. Если вы ограничены во времени, полезно знать в целом, что символизируют шаблоны, поэтому, когда вам НУЖНО знать детали шаблона, вы будете знать, где искать. Это в отличие от знания паттернов State или Singleton на их собственных маленьких островках.

2 голосов
/ 23 мая 2009

Абстрактная фабрика . Используется в инъекции зависимостей (DI).
Если вы понимаете это, вы знаете, как работает DI, а затем вы знаете, что такое Inversion of Control.

1 голос
/ 09 июня 2009

Я всегда лично чувствовал, что вы не "изучаете" шаблоны проектирования ... вы учитесь "распознавать" их. Другими словами, когда я впервые читал Шаблоны проектирования, многие из них казались решениями, которые просто естественным образом выпадали в приложениях, которые я создал ранее, но, возможно, я не делал это точно так же или так чисто.

По моему мнению, Design Patterns - это скорее стандартизация решений, которые материализуются снова и снова, а не обучение тому, как решить конкретную проблему.

1 голос
/ 08 июня 2009

Книга GoF (Gang of Four) рекомендует их как начало: (в «Руководстве для читателей» в книге)

Начните с самого простого и самого общие закономерности:

  1. Абстрактная фабрика
  2. Адаптер
  3. Композитный
  4. декоратор
  5. Заводской метод
  6. Наблюдатель
  7. Стратегия
  8. Шаблонный метод
1 голос
/ 24 мая 2009

Стратегия в моем списке. Это отличный способ избавить ваш код от условной логики, который существует только для поддержки множества способов выполнения задач, и помогает извлечь код «политики», чтобы его можно было тестировать изолированно.

1 голос
/ 23 мая 2009

Я думал, что «Flyweight» - это очень крутая модель, которая на самом деле не имеет никакого отношения ни к чему другому. (То есть, вы бы никогда не решили использовать другой шаблон вместо него.)

Но если вы собираетесь выучить только один шаблон, вам нужен именно «Посетитель». Это концепция, которая выходит далеко за пределы ОО-программирования; это поможет вам понять концепции функционального программирования, такие как map и fold. Или даже методы OO, такие как collect и inject.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...