-
Information Expert code https://habr.com/ru/companies/otus/articles/491636/ Информацию обрабатываем там, где она содержится.
-
Creator code https://habr.com/ru/companies/otus/articles/505618/ - Cоздаем объекты там, где они нужны.
-
Controller - Выносим логику многопоточности в отдельный класс или компонент.
-
Low Coupling + High Cohesion code https://habr.com/ru/companies/otus/articles/505852/
- Проектируем классы с однородной бизнес-логикой и минимальным количеством связей между собой.
-
Polymorphism https://habr.com/ru/companies/otus/articles/507600/ - Различные варианты поведения системы при необходимости оформляем в виде полиморфных вызовов.
-
Pure Fabrication — не стесняемся создавать классы, не имеющие аналог в предметной области, если это необходимо для соблюдения Low Coupling и High Cohesion.
-
Indirection https://habr.com/ru/companies/otus/articles/521476/ — Любой класс вызываем через его интерфейс.
-
Protected Variations https://habr.com/ru/companies/otus/articles/521476/ — применяя все вышесказанное, получаем устойчивый к изменениям код.
- Необходимо спроектировать систему так, чтобы изменение одних ее элементов не влияло на другие. В качестве решения предлагается идентифицировать точки возмоджных изменений или неустойчивости и распределить обязанности таким образом, чтобы обеспечить устойчивую работу системы.
Creational (Порождающие):
-
Fabric Method code (Фабричный метод): https://refactoring.guru/ru/design-patterns/factory-method
-
Abstract Factory code (Абстрактная фабрика): https://refactoring.guru/ru/design-patterns/abstract-factory
-
Prototype code (Прототип) : https://refactoring.guru/ru/design-patterns/prototype
-
Builder code (Строитель, Строитель с директором) : https://refactoring.guru/ru/design-patterns/builder
-
Singleton code (Одиночка) : https://refactoring.guru/ru/design-patterns/singleton
Structural (Структурные):
-
Adapter code (Адаптер): https://refactoring.guru/ru/design-patterns/adapter
-
Bridge code (Мост): https://refactoring.guru/ru/design-patterns/bridge
-
Composite code (Компоновщик): https://refactoring.guru/ru/design-patterns/composite
-
Decorator code (Декоратор): https://refactoring.guru/ru/design-patterns/decorator
-
Facade code (Фасад): https://refactoring.guru/ru/design-patterns/facade
-
Flyweight code (Легковес): https://refactoring.guru/ru/design-patterns/flyweight
-
Proxy code (Заместитель): https://refactoring.guru/ru/design-patterns/proxy
Behavioral (Поведенческие):
- Chain of Responsibility code (Цепочка обязанностей): https://refactoring.guru/ru/design-patterns/chain-of-responsibility
- Command code (Команда): https://refactoring.guru/ru/design-patterns/command
- Interpreter code (Интерпретатор):
- Iterator code (Итератор): https://refactoring.guru/ru/design-patterns/iterator
- Mediator code (Посредник): https://refactoring.guru/ru/design-patterns/mediator
- Memento code (Снимок): https://refactoring.guru/ru/design-patterns/memento
- Observer code (Наблюдатель): https://refactoring.guru/ru/design-patterns/observer
- State code (Состояние): https://refactoring.guru/ru/design-patterns/state
- Strategy code (Стратегия): https://refactoring.guru/ru/design-patterns/strategy
- Template Method code (Шаблонный метод): https://refactoring.guru/ru/design-patterns/template-method
- Visitor code (Посетитель): https://refactoring.guru/ru/design-patterns/visitor
git clone [email protected]:maxlen/design-patterns.git
# Go to project directory
cd design-patterns
# run particular pattern (example)
php src/gof/abstract-factory.php