Шаблоны проектирования
Шаблоны креационного дизайна
Singleton - убедитесь, что создан только один экземпляр класса, и предоставьте глобальную точку доступа к объекту.
Factory (упрощенная версия Factory Method) - создает объекты без предоставления клиенту логики создания экземпляров и ссылается на вновь созданный объект через общий интерфейс.
Factory Method - определяет интерфейс для создания объектов, но позволяет подклассам решать, какой класс создавать, и ссылается на вновь созданный объект через общий интерфейс.
Абстрактная фабрика - предлагает интерфейс для создания семейства связанных объектов без явного указания их классов.
Строитель - Определяет экземпляр для создания объекта, но позволяет подклассам решать, какой класс создавать, и позволяет более точно контролировать процесс построения.
Прототип. Укажите типы объектов, создаваемых с использованием прототипа, и создайте новые объекты, скопировав этот прототип.
Поведенческие шаблоны дизайна
Цепочка ответственности - позволяет избежать прикрепления отправителя запроса к его получателю, предоставляя таким образом другим объектам возможность обработки запроса. - Объекты становятся частями цепочки, и запрос отправляется от одного объекта к другому по цепочке, пока один из объектов не обработает его.
Команда - инкапсулирует запрос в объекте. Позволяет параметризовать клиентов с разными запросами и позволяет сохранять запросы в очереди.
Интерпретатор - для данного языка определите представление для его грамматики вместе с интерпретатором, который использует представление для интерпретации предложений на языке / сопоставьте домен с языком, язык с грамматикой и грамматику с иерархическим объектно-ориентированным дизайном
Итератор - предоставляет способ последовательного доступа к элементам агрегатного объекта, не раскрывая его базовое представление.
Посредник - Определите объект, который инкапсулирует, как взаимодействует набор объектов. Посредник способствует слабой связи, не позволяя объектам явно ссылаться друг на друга, и позволяет независимо изменять их взаимодействие.
Наблюдатель - определите зависимость «один ко многим» между объектами, чтобы при изменении состояния одного объекта все его иждивенцы уведомлялись и обновлялись автоматически.
Стратегия - определите семейство алгоритмов, инкапсулируйте каждый и сделайте их взаимозаменяемыми. Стратегия позволяет алгоритму варьироваться независимо от клиентов, которые его используют.
Шаблонный метод - Определяет каркас алгоритма в операции, откладывая некоторые шаги до подклассов / Шаблонный метод позволяет подклассам переопределять определенные шаги алгоритма, не позволяя им изменять структуру алгоритма.
Посетитель - представляет операцию, выполняемую с элементами структуры объекта. Посетитель позволяет определить новую операцию без изменения классов элементов, с которыми она работает.
Null Object - Предоставить объект в качестве суррогата отсутствия объекта данного типа. / Null Object Pattern обеспечивает интеллектуальное поведение "ничего не делать", скрывая детали от своих соавторов.
Структурные шаблоны проектирования
Адаптер - преобразование интерфейса класса в другой интерфейс, ожидаемый клиентами. / Adapter позволяет классам работать вместе, что иначе невозможно из-за несовместимых интерфейсов.
Мост - объединение объектов в древовидные структуры для представления иерархий части-целого. / Composite позволяет клиентам одинаково относиться к отдельным объектам и композициям объектов.
Composite - объединяет объекты в древовидные структуры для представления иерархий части-целого. / Composite позволяет клиентам одинаково относиться к отдельным объектам и композициям объектов.
Декоратор - динамически добавлять дополнительные обязанности к объекту.
Flyweight - используйте общий доступ для поддержки большого количества объектов, которые имеют общую часть своего внутреннего состояния, когда другая часть состояния может изменяться.
Памятка - захватывает внутреннее состояние объекта, не нарушая инкапсуляцию и, таким образом, предоставляет средство для восстановления объекта в исходное состояние при необходимости.
Прокси - предоставьте «Заполнитель» для объекта, чтобы контролировать ссылки на него.