[Design Patterns] > Basic (Часть 1) Flashcards
Что такое шаблоны проектирования? (pattern)
Это архитектурные конструкции, для решение типичной проблемы проектирования
Какие бывают типы шаблонов?
Есть три типа шаблонов:
-порождающие
-структурные
-поведенческие
Порождающие шаблоны
- что делают
- 3 примера
Порождающие шаблоны предназначены для оптимизации построения обьекта или настройки производства объектов
(examples):
-фабрика (Factory Method, Simple Factory, Abstract Factory) +–
-строитель (Builder) +
-одиночка (Singleton) +
-прототип (Prototype)
Структурные шаблоны - что делают, 3 примера
Структурные шаблоны предназначены для построения композици объектов и настройки логики их взаимодействия
(examples):
-декоратор (Decorator) +
-фасад (Facad) +
-мост (Bridge) +
.
-адаптер (Adapter)
-прокси (Proxy)
-приспособленец (Flyweight)
Поведенческие шаблоны - что делают, 3 примера
Поведенческие шаблоны предназначены для настройки поведения объектов и их коммуникации
(examples):
итератор (Iterator) +
наблюдатель (Observer)
команда (Command)
.
посредник (Mediator)
посетитель (Visitor)
стратегия (Strategy)
состояние (State)
Опишите шаблон Простая Фабрика (Simple Factory)
+когда стоит использовать?
Простая Фабрика — порождающий шаблон создающий некий объект с уже заданной внутреней логикой который производит нужные обьекты
(когда стоит использовать?)
Когда знаем как производить необходимые объекты и хотим отделить эту логику от основной
Опишите шаблон Строитель (Builder)
+когда стоит использовать?
Строитель — порождающий шаблон позвощляющий удобно создавать обьекты из множества параметров
(когда стоит использовать?)
Когда создание обьекта состоит из множества параметров и мы не хотим засорить наш конструктор
Опишите шаблон одиночка (Singleton)
+когда стоит использовать?
Одиночка — порождающий шаблон позволяющий хранить единственный экземляр класса
(+когда стоит использовать?)
Когда хотим избежать дублирывания определенного класса
Опишите шаблон Декоратор (Decorator)
+когда стоит использовать?
Декоратор — структурный шаблон позволяющий динамически расширять/изменять поведение обьекта
(+когда стоит использовать?)
Когда хотим расширить логику класса, не перегружая сам класс
Опишите шаблон Фасад (Facade)
+когда стоит использовать?
Фасад — структурный шаблон скрывающий логику обьединения нескольких систем к одному обьекту который делигирует вызовы к этим система
(+когда стоит использовать?)
Когда мы имеет пару действий подрозумивающие вызов нескольких функций из разных систем
(пример):
load music system = включить звук, отобразить загрузку экрана, проиграть мелодию запуска это все метод turnOn)
Опишите шаблон Мост (Bridge)
+когда стоит использовать?
Мост — это структурный шаблон который разделяет классовую иерархию на две отдельные: абстракцию и реализацию, позволяя изменять их независимо друг от друга
(+когда стоит использовать?)
Когда мы засоряем иерархию классов однотипной реализацией
(пример)
мы имеем классовую структуру страниц, когда мы заходим добавить смену тем страниц, то лучше эту логику вынести в отдельный класс
Опишите шаблон Итератор (Iterator)
+когда стоит использовать?
Итератор — это поведенческий шаблон, который позволяет последовательно обходить элементы составного обьекта, не раскрывая его внутреней логики
(+когда стоит использовать?)
Когда мы хотим вынести логику обхода неких коллекций в отдельный класс
Опишите шаблон Команда (Command)
+когда стоит использовать?
Команда — поведенческий шаблон который превращает запросы в объекты, где обьект представяет собой набор действие т.к. (исполнить, отмена действия)
(+когда стоит использовать?)
К примеру при реализации системы транзакций, мы вызываем список команд, либо все хорошо, либо при ошибке мы вызовем отмену действия у уже вызванных команд
Опишите шаблон Наблюдатель (Observer)
+когда стоит использовать?
Наблюдатель — это поведенческий шаблон, который создаёт механизм подписки, позволяющий одним объектам следить и реагировать на события, происходящие в других объектах
+когда стоит использовать?
Когда хотим узнать про изминения в неком обьекте
(пример)
Подписка на обновления чегонибудь