|
1 | 1 | # Шаблоны проектирования
|
2 | 2 |
|
3 |
| -Здесь описаны в общей сумме 17 паттернов: порождающие, структурные и поведенческие. |
4 |
| - |
5 |
| -1. Порождающие паттерны: |
6 |
| -1.1. Singleton (Одиночка) |
7 |
| -1.2. Prototype (Прототип) |
8 |
| -1.3. Builder (Строитель) |
9 |
| -1.4. Factory (Фабрика) |
10 |
| -2. Структурные паттерны: |
11 |
| -2.1. Bridge (Мост) |
12 |
| -2.2. Facade (Фасад) |
13 |
| -2.3. Adapter (Адаптер) |
14 |
| -2.4. Proxy (Прокси) |
15 |
| -2.5. Composite (Композит) |
16 |
| -3. Поведенческие паттерны: |
17 |
| -3.1. Chain of Command |
18 |
| -3.2. Mediator |
19 |
| -3.3. Command |
20 |
| -3.4. State |
21 |
| -3.5. Strategy |
22 |
| -3.6. Iterator |
23 |
| -3.7. Template |
24 |
| -3.8. Observer |
| 3 | +Шаблоны проектирования помогают нам унифицировать код под уже существующие лучшие практики. Используя нужный шаблон проектирования в определёной ситуации формирует стерильный код. Здесь описаны в общей сумме 17 паттернов: порождающие, структурные и поведенческие. |
| 4 | + |
| 5 | +## Оглавление |
| 6 | +- [Шаблоны проектирования](#шаблоны-проектирования) |
| 7 | + - [Оглавление](#оглавление) |
| 8 | + - [Порождающие паттерны](#порождающие-паттерны) |
| 9 | + - [Singleton (Одиночка)](#singleton-одиночка) |
| 10 | + - [Prototype (Прототип)](#prototype-прототип) |
| 11 | + - [Builder (Строитель)](#builder-строитель) |
| 12 | + - [Factory (Фабрика)](#factory-фабрика) |
| 13 | + - [Структурные паттерны:](#структурные-паттерны) |
| 14 | + - [Bridge (Мост)](#bridge-мост) |
| 15 | + - [Facade (Фасад)](#facade-фасад) |
| 16 | + - [Adapter (Адаптер)](#adapter-адаптер) |
| 17 | + - [Proxy (Прокси)](#proxy-прокси) |
| 18 | + - [Composite (Композит)](#composite-композит) |
25 | 19 |
|
26 | 20 | ## Порождающие паттерны
|
27 | 21 |
|
|
32 | 26 | Данный шаблон необходимо применять, когда необходим лишь один экземпляр класса, например для методов, которые описывают конфигурацию или создают CRUDGeneric класс. <br/> <br/>
|
33 | 27 | Суть паттерна - описывать методы класса через модификаторы *public* и *static*. Таким образом с помощью модификатора *public* методы будут доступны всем, а модификатор *static*, позволяет получать доступ к методам класса без создаеия экземпляра класса.
|
34 | 28 |
|
| 29 | +Пример реализации: [Singleton](creational_patterns/Singleton.ts) |
| 30 | + |
35 | 31 | ### Prototype (Прототип)
|
36 | 32 |
|
37 | 33 | Данный шаблон применяется когда необходимо склонировать полностью другой класс не углубляюсь в реализацию этого класса. <br/> <br/>
|
38 | 34 | Суть паттерна - создать метод внутри класса, который позволяет полностью скоппировать другой класс.
|
39 | 35 |
|
| 36 | +Пример реализации: [Prototype](creational_patterns/Prototype.ts) |
| 37 | + |
40 | 38 | ### Builder (Строитель)
|
41 | 39 | Данный шаблон применяется, когда необходимо создавать большие объекты с разными конфигурациями или фильтрами. Отличный пример это объект позволяющий сделать объект запроса к базе данных. <br/> <br/>
|
42 | 40 | Суть паттерна - создать большое количество простых методов, через модификатор *public*, которые можно будет последовательно через точку реализовывать на объекте. Например методы фильтрации данных приходящих из базы данных.
|
43 | 41 |
|
| 42 | +Пример реализации: [Builder](creational_patterns/Builder.ts) |
| 43 | + |
44 | 44 | ### Factory (Фабрика)
|
45 | 45 | Данный шаблон применяется при создании возможности на основе базового класса создавать разные системы, которые подключаются к базовому классу через единый базовый интерфейс этого класса. <br/> <br/>
|
46 | 46 | Суть паттерна - создать базовый класс системы и описать API к подключению этой системы, после чего от этого базового класса системы наследовать все методы API для подключения и описания конкретной другой системы.
|
47 | 47 | Примеры реализации: <br/>
|
48 | 48 | 1. Система отправки товара интернет-магазина, как базовая система со своим API, от которой могут наследоватся системы описывающее реализацию отправку Новой Почтой, Укрпочтой, или отправка курьером. <br/> <br/>
|
49 | 49 | 2. Система страхования, которая является базовым классом API и от которой наследуются классы описывающее разные виды страховых компаний, которыми может воспользоватся пользователь: например система MetLife, Спутник или Alicoaglife.
|
50 | 50 |
|
| 51 | +Пример реализации: [Factory](creational_patterns/Factory.ts) |
| 52 | + |
51 | 53 | ## Структурные паттерны:
|
52 | 54 |
|
53 | 55 | Структурные паттерны - это шаблоны проектирования, которые типизируют структурирования кода.
|
|
0 commit comments