Software design patterns are general reusable solutions to problems which occur over and over again in object-oriented design enviroment. It is not a finished design that can be transformed into source code directly, but it is template how to solve the problem. We can classify them by purpose into creational (abstract the instantiation process), structure (how classes and objects are composed to form larger structures) and behavioral patterns (the assignment of responsibilities between objects).
⚠ This repository is an extension of the original repository.
Creational Patterns (Порождающие паттерны)
- (Abstract Factory) Абстрактная фабрика - создаёт семейство взаимносвязных объектов
- (Builder) Строитель - поэтамное создание сложного объекта
- (Factory Method) Фабричный метод - определяет интерфейс для создания объекта, при этом его тип определяется подклассами
- (Object Pool) Пул объектов - создание "затратных" объектов за счёт их многократного использования
- (Prototype) Прототип - создание объектов на основе прототипов
- (Singleton) Одиночка - создаёт единственный экземпляр некоторого класса и предоставляет к нему доступ
Structural Patterns (Структурные паттерны)
- (Adapter) Адаптер - преобразует интерфейс существующего класса к виду, подходящему для использования
- (Bridge) Мост - делает абсракцию и реализацию независимыми друг от друга
- (Composite) Компоновщик - группирует схожие объекты в древовидные структуры
- (Decorator) Декоратор - динамически добавляет объекту новую функциональность
- (Facade) Фасад - предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой системы
- (Flyweight) Приспособленец - использует разделение для поддержки множества мелких объектов
- (Proxy) Заместитель - подменяет другой объект для контроля доступа к нему
Behavioral Patterns (Паттерны поведения)
- (Chain of Responsibility) Цепочка обязанностей - предоставляет способ передачи запроса по цепочке получателей
- (Command) Команда - Инкапсулирует запрос в виде объекта
- (Interpreter) Интерпертатор - для языка определяет его грамматику и интерпритатор, использующий эту грамматику
- (Iterator) Итератор - предоставляет механизм обхода элементов коллекции
- (Mediator) Посредник - Инкапсулирует взаимодействие между множеством объектов в объект-посредник
- (Memento) Хранитель - сохраняет и восстанавливает состояние объекта
- (Observer) Наблюдатель - при изменении объекта извещает все зависимые объекты для их обновления
- (State) Состояние - изменяет поведение объекта при изменении его состояния
- (Strategy) Стратегия - переносит алгоритмы в отдельную иерархию классов, делая их взаимозаменяемыми
- (Template Method) Шаблонный метод - определяет шаги алгоритма, позволяя подклассам изменить некоторые из них
- (Visitor) Посетитель - определяет новую операцию в классе без его изменения
Шаблоны проектирования в данном репизитории основаны на: