Заметки: ПАТТЕРНЫ проектирования

Концепции ООП:

  • Абстракция
  • Инкапсуляция
  • Полиморфизм
  • Наследование

Принципы проектирования:

  • Инкапсулируйте то, что изменяется. (Выделите аспекты приложения, которые могут изменяться, и отделите их от тех, которые всегда остаются постоянными.)
  • Программируйте на уровне интерфейсов, а не на уровне реализации.
  • Отдавайте предпочтение композиции перед наследованием.
  • Стремитесь к слабой связности взаимодействующих объектов.
  • Классы должны быть открыты для расширения, но закрыты для изменения.
  • Код должен зависеть от абстракций, а не от конкретных классов.
  • Взаимодействуйте только с «друзьями».
  • Принцип минимальной информированности: общайтесь только с близкими друзьями.
  • Голливудский принцип. Не вызывайте нас — мы вас сами вызовем.
  • Класс должен иметь только одну причину для изменений.

Паттерн — решение задачи в контексте.

Антипаттерн описывает ПЛОХОЕ решение задачи.

1) Паттерн Стратегия определяет семейство алгоритмов, инкапсулирует каждый из них и обеспечивает их взаимозаменяемость. Он позволяет модифицировать алгоритмы независимо от их использования на стороне клиента.

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

3) Паттерн Декоратор динамически наделяет объект новыми возможностями и является гибкой альтернативой субклассированию в области расширения функциональности.

4) Паттерн Фабричный Метод определяет интерфейс создания объекта, но позволяет субклассам выбрать класс создаваемого экземпляра. Таким образом, Фабричный метод делегирует операцию создания экземпляра субклассам.

5) Паттерн Абстрактная Фабрика предоставляет интерфейс создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов.

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

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

8) Паттерн Адаптер преобразует интерфейс класса к другому интерфейсу, на который рассчитан клиент. Адаптер обеспечивает совместную работу классов, невозможную в обычных условиях из-за несовместимости интерфейсов.

9) Паттерн Фасад предоставляет унифицированный интерфейс к группе интерфейсов подсистемы. Фасад определяет высокоуровневый интерфейс, упрощающий работу с подсистемой.

10) Паттерн Шаблонный Метод задает «скелет» алгоритма в методе, оставляя определение реализации некоторых шагов субклассам. Субклассы могут переопределять некоторые части алгоритма без изменения его структуры.

11) Паттерн Итератор предоставляет механизм последовательного перебора элементов коллекции без раскрытия ее внутреннего представления.

12) Паттерн Компоновщик объединяет объекты в древовидные структуры для представления иерархий «часть/целое». Компоновщик позволяет клиенту выполнить однородные операции с отдельными объектами и их совокупностями.

13) Паттерн Состояние управляет изменением поведения объекта при изменении его внутреннего состояния. Внешне это выглядит так, словно объект меняет свой класс.

14) Паттерн Заместитель предоставляет суррогатный объект, управляющий доступом к другому объекту.

*****

1) Паттерн Мост позволяет изменять реализацию и абстракцию, для чего они размещаются в двух разных иерархиях классов.

2) Паттерн Строитель инкапсулирует конструкцию продукта и позволяет разделить его на этапы.

3) Паттерн Цепочка Обязанностей используется, когда вы хотите предоставить нескольким объектам возможность обработать запрос.

4) Используйте паттерн Приспособленец, если один экземпляр класса может предоставить много «виртуальных экземпляров».

5) Паттерн Интерпретатор используется для создания языковых интерпретаторов.

6) Паттерн Посредник используется для централизации сложных взаимодействий и управляющих операций между объектами.

7) Паттерн Хранитель используется для реализации возврата к одному из предыдущих состояний (например, если пользователь выполнил команду «Отменить»).

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

9) Паттерн Посетитель используется для расширения возможностей комбинации объектов в том случае, если инкапсуляция не существенна.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *