GOF
GOF — это набор из 23 классических паттернов проектирования из книги Design Patterns: Elements of Reusable Object-Oriented Software.
Как читать раздел
- Сначала понять намерение паттерна, а не копировать форму.
- Потом посмотреть, как эта идея раскладывается на объекты метаданных, общие модули, формы и обработчики в 1С.
- И только после этого решать, нужен ли паттерн в прикладной задаче или достаточно более простого кода.
Порождающие паттерны
| Паттерн |
Коротко |
Пример |
Абстрактная фабрика (Abstract Factory) |
Создает семейства связанных объектов через единый интерфейс. |
AbstractFactory |
Строитель (Builder) |
Разделяет процесс пошаговой сборки сложного объекта и его итоговое представление. |
Builder |
Фабричный метод (Factory Method) |
Делегирует создание объектов специализированному методу или подклассу. |
FactoryMethod |
Прототип (Prototype) |
Создает новые объекты копированием заранее настроенного экземпляра. |
Prototype |
Одиночка (Singleton) |
Ограничивает создание класса одним экземпляром и дает глобальную точку доступа. |
Singleton |
Структурные паттерны
| Паттерн |
Коротко |
Пример |
Адаптер (Adapter) |
Приводит несовместимый интерфейс к ожидаемому клиентом виду. |
Adapter |
Мост (Bridge) |
Разделяет абстракцию и реализацию, чтобы их можно было развивать независимо. |
|
Компоновщик (Composite) |
Позволяет работать с одиночными объектами и их деревьями единообразно. |
|
Декоратор (Decorator) |
Добавляет объекту поведение через обертку, не меняя исходный класс. |
|
Фасад (Facade) |
Дает простой внешний вход к сложной подсистеме. |
|
Приспособленец (Flyweight) |
Выносит общую часть состояния, чтобы экономить память на большом числе однотипных объектов. |
|
Заместитель (Proxy) |
Подставляет специальный объект вместо реального и контролирует доступ к нему. |
|
Поведенческие паттерны
| Паттерн |
Коротко |
Пример |
Цепочка обязанностей (Chain of Responsibility) |
Передает запрос по цепочке обработчиков, пока кто-то не возьмет его на себя. |
ChainOfResponsibility |
Команда (Command) |
Представляет действие как отдельный объект. |
Command |
Интерпретатор (Interpreter) |
Описывает грамматику языка и интерпретирует выражения этого языка. |
|
Итератор (Iterator) |
Дает способ обходить коллекцию, не раскрывая ее внутреннее устройство. |
Iterator |
Посредник (Mediator) |
Централизует взаимодействие между объектами и уменьшает прямые связи между ними. |
Mediator |
Снимок (Memento) |
Сохраняет и восстанавливает внутреннее состояние объекта. |
Memento |
Наблюдатель (Observer) |
Подписчики получают уведомление об изменении состояния издателя. |
Observer |
Состояние (State) |
Перекладывает поведение по состояниям в отдельные объекты-состояния. |
State |
Стратегия (Strategy) |
Инкапсулирует взаимозаменяемые алгоритмы за единым интерфейсом. |
Strategy |
Шаблонный метод (Template Method) |
Задает каркас алгоритма, оставляя отдельные шаги на расширение. |
TemplateMethod |
Посетитель (Visitor) |
Выносит операции над структурой объектов в отдельный объект-посетитель. |
Visitor |