[Design Patterns] > Basic (Часть 1) Flashcards

1
Q

Что такое шаблоны проектирования? (pattern)

A

Это архитектурные конструкции, для решение типичной проблемы проектирования

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Какие бывают типы шаблонов?

A

Есть три типа шаблонов:
-порождающие
-структурные
-поведенческие

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Порождающие шаблоны
- что делают
- 3 примера

A

Порождающие шаблоны предназначены для оптимизации построения обьекта или настройки производства объектов

(examples):
-фабрика (Factory Method, Simple Factory, Abstract Factory) +–
-строитель (Builder) +
-одиночка (Singleton) +
-прототип (Prototype)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Структурные шаблоны - что делают, 3 примера

A

Структурные шаблоны предназначены для построения композици объектов и настройки логики их взаимодействия

(examples):
-декоратор (Decorator) +
-фасад (Facad) +
-мост (Bridge) +
.
-адаптер (Adapter)
-прокси (Proxy)
-приспособленец (Flyweight)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Поведенческие шаблоны - что делают, 3 примера

A

Поведенческие шаблоны предназначены для настройки поведения объектов и их коммуникации

(examples):
итератор (Iterator) +
наблюдатель (Observer)
команда (Command)

.
посредник (Mediator)
посетитель (Visitor)
стратегия (Strategy)
состояние (State)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Опишите шаблон Простая Фабрика (Simple Factory)
+когда стоит использовать?

A

Простая Фабрика — порождающий шаблон создающий некий объект с уже заданной внутреней логикой который производит нужные обьекты

(когда стоит использовать?)
Когда знаем как производить необходимые объекты и хотим отделить эту логику от основной

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Опишите шаблон Строитель (Builder)
+когда стоит использовать?

A

Строитель — порождающий шаблон позвощляющий удобно создавать обьекты из множества параметров

(когда стоит использовать?)
Когда создание обьекта состоит из множества параметров и мы не хотим засорить наш конструктор

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Опишите шаблон одиночка (Singleton)
+когда стоит использовать?

A

Одиночка — порождающий шаблон позволяющий хранить единственный экземляр класса

(+когда стоит использовать?)
Когда хотим избежать дублирывания определенного класса

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Опишите шаблон Декоратор (Decorator)
+когда стоит использовать?

A

Декоратор — структурный шаблон позволяющий динамически расширять/изменять поведение обьекта

(+когда стоит использовать?)
Когда хотим расширить логику класса, не перегружая сам класс

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Опишите шаблон Фасад (Facade)
+когда стоит использовать?

A

Фасад — структурный шаблон скрывающий логику обьединения нескольких систем к одному обьекту который делигирует вызовы к этим система

(+когда стоит использовать?)
Когда мы имеет пару действий подрозумивающие вызов нескольких функций из разных систем

(пример):
load music system = включить звук, отобразить загрузку экрана, проиграть мелодию запуска это все метод turnOn)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Опишите шаблон Мост (Bridge)
+когда стоит использовать?

A

Мост — это структурный шаблон который разделяет классовую иерархию на две отдельные: абстракцию и реализацию, позволяя изменять их независимо друг от друга

(+когда стоит использовать?)
Когда мы засоряем иерархию классов однотипной реализацией

(пример)
мы имеем классовую структуру страниц, когда мы заходим добавить смену тем страниц, то лучше эту логику вынести в отдельный класс

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Опишите шаблон Итератор (Iterator)
+когда стоит использовать?

A

Итератор — это поведенческий шаблон, который позволяет последовательно обходить элементы составного обьекта, не раскрывая его внутреней логики

(+когда стоит использовать?)
Когда мы хотим вынести логику обхода неких коллекций в отдельный класс

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Опишите шаблон Команда (Command)
+когда стоит использовать?

A

Команда — поведенческий шаблон который превращает запросы в объекты, где обьект представяет собой набор действие т.к. (исполнить, отмена действия)

(+когда стоит использовать?)
К примеру при реализации системы транзакций, мы вызываем список команд, либо все хорошо, либо при ошибке мы вызовем отмену действия у уже вызванных команд

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Опишите шаблон Наблюдатель (Observer)
+когда стоит использовать?

A

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

+когда стоит использовать?
Когда хотим узнать про изминения в неком обьекте

(пример)
Подписка на обновления чегонибудь

How well did you know this?
1
Not at all
2
3
4
5
Perfectly