Skip to content

Latest commit

 

History

History
65 lines (65 loc) · 5.09 KB

README.md

File metadata and controls

65 lines (65 loc) · 5.09 KB
  • Шаблоны проектирования
    • Порождающие (Creational)
      • Абстрактная фабрика (Abstract factory)
        • Определяется общий интерфейс, по которому создаются разные реализации.
      • Строитель (Builder)
        • Описывается абстрактный класс, для которого создаются разные реализации.
      • Фабричный метод (Factory method )
        • Определяется общий интерфейс, по которому создаются разные реализации.
      • Прототип (Prototype)
        • Создание через клонирование.
    • Структурные (Structural)
      • Адаптер (Adapter)
        • Переходник, преобразователь.
      • Мост (Bridge)
        • Определяется общий интерфейс, для моделей и для их представления. В результате любую модель можно представить в любом виде.
      • Компоновщик (Composite)
        • Древовидный контрол.
      • Декоратор (Decorator)
        • Обёртка для класса/компонента, которая расширяет функциональность.
      • Фасад (Facade)
        • Обёртка над сложным интерфейсом. Умный адаптер.
      • Приспособленец (Flyweight)
        • Map-кэш. Разделение памяти.
      • Заместитель (Proxy)
        • Перехват методов.
    • Поведенческие (Behavioral)
      • Цепочка обязанностей (Chain of responsibility)
        • Обработка сообщения по цепочке, похоже на Promise.then().
      • Команда (Command)
        • Прослойка между клиентом и исполнителем, для учёта команд.
      • Интерпретатор (Interpreter)
        • Интерпретатор языка
      • Итератор (Iterator)
        • Метод next() (children() для дерева)
      • Посредник (Mediator)
        • Роутер сообщений. Получает сообщение и определеяет, кому его отправить.
      • Хранитель (Memento)
        • Методы для сохранения и восстановления своего состояния, и отдельный класс для хранения состояний.
      • Наблюдатель (Observer)
        • Сохраняет подписчиков на событие в массив, при наступлении события, рассылает подписчикам уведомление
      • Состояние (State)
        • Конечный автомат. Вместо условий в каждом методе, отдельный класс для каждого состояния.
      • Стратегия (Strategy)
        • Набор алгоритмов для решения одной задачи разными способами.
      • Шаблонный метод
        • Описание общих шагов алгоритма. Реализация шагов на конкретных классах.
  • GRASP
    • Информационный эксперт (Information Expert)
      • Информация должна обрабатываться там, где она содержится.
    • Создатель (Creator)
      • Создавать экземпляры класса должен класс, которому они нужны. То же, что и Информационный эксперт, только про создание.
    • Контроллер (Controller)
      • Обработка событий от пользователя или внешних событий.
    • Высокая связность / Слабое зацепление (Low Coupling / High Cohesion)
      • Нужно группировать методы так, чтобы связанные между собой методы были в одном классе.
    • Полиморфизм (Polymorphism)
      • Различные варианты поведения системы при необходимости оформляем в виде полиморфных вызовов.
    • Чистое изготовление (Pure Fabrication)
      • Не стесняемся создавать классы, не имеющие аналог в предметной области, если это необходимо для соблюдения Low Coupling и High Cohesion.
    • Перенаправление (Indirection)
      • В архитектуре Model-View-Controller, контроллер ослабляет зацепление модели с её представлением.
    • Устойчивость к изменениям (Protected Variations)
      • Работа только через интерфейс.
  • Чистая архитектура