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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

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

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

Ответ 5

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

Я бы предложил прочитать Оглавление, а затем прочитать сводку каталога шаблонов. Если вы ограничены во времени, зная, в общем, что символизирует шаблоны, было бы полезно, так что, когда вам НЕОБХОДИМО узнать информацию о шаблоне, вы бы знали, где искать. Это, в отличие от того, чтобы знать государственные или синглтонские узоры на своих маленьких островах.

Ответ 6

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

Ответ 7

Шаблон "Command" немного сложнее, чем абстрактный Factory, но обычно используется и мощный.

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

Ответ 8

Я думал, что "Flyweight" был очень классным образцом, который действительно не имел никакого отношения ни к чему другому. (I.e., вы никогда не решите использовать другой шаблон в этом месте.)

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

Ответ 9

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

Ответ 10

Книга GoF (Gang of Four) рекомендует их как начало: (в "Руководстве по чтению" в книге)

Начните с самого простого и общие шаблоны:

  • Аннотация Factory
  • Адаптер
  • Composite
  • декоратор
  • Factory Метод
  • Observer
  • Стратегия
  • Метод шаблона

Ответ 11

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

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

Ответ 12

Singleton используется очень сильно во многих местах. Шаблон Adapter также очень часто используется. Эти два являются одними из наиболее часто используемых и относительно просты; понимание их может быть полезно для понимания моделей и может быть полезно для вашего развития.