
ООП приемы программирования, часть 1.pptx
- Количество слайдов: 45
Design patterns Anton Rodionov
Decorator Название и классификация паттерна Декоратор – паттерн, структурирующий объекты. Назначение Динамически добавляет объекту новые обязанности. Является гибкой альтернативой порождению подклассов с целью расширения функциональности. Известен также под именем Wrapper (обертка) Design patterns
Decorator «interface» IComponent +Operation() Client Component +Operation() Design patterns Decorator -added. State -component : IComponent +Operation() +Added. Behavior()
Proxy Название и классификация паттерна Заместитель – паттерн, структурирующий объекты. Назначение Является суррогатом другого объекта и контролирует доступ к нему. Позволяет создавать «тяжелые» объекты по требованию. Известен также под именем Surrogate (суррогат) Design patterns
Proxy Client «interface» IComponent +Operation() Design patterns Proxy +Operation() Перенаправляет запросы к Component
Singleton Название и классификация паттерна Одиночка – паттерн, порождающий объекты. Назначение Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Singleton -unique. Instance : Singleton = new Singleton() +Instance : Singleton -Singleton() Design patterns возвращает unique. Instance
Bridge Название и классификация паттерна Мост – паттерн, структурирующий объекты. Назначение Отделить абстракцию от реализации так, чтобы то и другое можно было изменять независимо. Известен также под именем Handle (описатель) Body (тело) Design patterns
Bridge Client Abstraction -bridge +Operation() Вызывает Operation. Imp () в bridge «interface» Bridge +Operation. Imp() Implementation. A +Operation. Imp() Design patterns Implementation. B +Operation. Imp()
Composite Название и классификация паттерна Компоновщик – паттерн, структурирующий объекты. Назначение Компонует объекты в древовидные структуры для представления иерархий часть-целое. Позволяет клиентам единообразно трактовать индивидуальные и составные объекты. Design patterns
Composite «interface» IComponent +Operation() Client Component +Operation() Design patterns * 1 Composite -list : IComponent +Operation() Вызывает Operation() у каждого компонента
Adapter Название и классификация паттерна Адаптер – паттерн, структурирующий классы и объекты. Назначение Преобразует интерфейс одного класса в интерфейс другого, который ожидают клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна. Design patterns
Adapter Client «interface» ITarget +Request() Adaptee +Specific. Request() Adapter Request() вызывает Specific. Request() Design patterns +Request()
Flyweight Название и классификация паттерна Приспособленец – паттерн, структурирующий объекты. Назначение Использует разделение для эффективной поддержки множества мелких объектов. Основная проблема ‑ в затратах на хранение таких объектов, если их число велико, а содержащаяся информация дублируется. Design patterns
Flyweight Client -unshared. State Flyweight. Factory -flyweights : Dictionary «interface» IFlyweight +Operation() Flyweight -intrinsic. State +Operation() Design patterns extrinsic. State вычисляется при работе
Façade Название и классификация паттерна Фасад – паттерн, структурирующий объекты. Назначение Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы. Design patterns
Façade Library Subsystem. A Subsystem. B Subsystem. C Design patterns Facade -a : Subsystem. A -b : Subsystem. B -c : Subsystem. C +Operation 1() +Operation 2() Client
Prototype Название и классификация паттерна Прототип – паттерн, порождающий объекты. Назначение Задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты, путем копирования этого прототипа. Design patterns
Prototype Client «interface» IPrototype +Clone() +Deep. Copy() Design patterns
Factory method Название и классификация паттерна Фабричный метод – паттерн, порождающий классы. Назначение Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать. Фабричный метод позволяет классу делегировать инстанцирование подклассам. Известен также под именем Virtual Constructor (виртуальный конструктор) Design patterns
Factory method product = сreator. Factory. Method() «interface» IProduct Client -product : IProduct. A Creator +Factory. Method () : IProduct Design patterns Product. B
Abstract factory Название и классификация паттерна Абстрактная фабрика – паттерн, порождающий объекты. Назначение Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов. Известен также под именем Kit (инструментарий) Design patterns
Abstract factory Client -a : IProduct. A -b : IProduct. B +Client(in parameter : IFactory) «interface» IFactory. One Factory. Two Design patterns «interface» IProduct. A 1 Product. A 2 «interface» IProduct. B 1 Product. B 2
Builder Название и классификация паттерна Строитель – паттерн, порождающий объекты. Назначение Отделяет конструирование сложного объекта от его представления, так что результате одного и того же процесса конструирования могут получаться разные представления. Design patterns
Builder Client Director +Construct() : Product Вызывает Build. Part() по необходимости «interface» IBuilder +Build. Part() +Get. Result() : Product Design patterns Product -parts : List
Strategy Название и классификация паттерна Стратегия – паттерн поведения объектов. Назначение Определяет семейство алгоритмов, инкапсулирует каждый их них и делает их взаимозаменяемыми. Стратегия позволяет изменять алгоритмы независимо от клиентов, которые ими пользуются. Известен также под именем Policy (политика) Design patterns
Strategy «interface» IStrategy +Algorithm() Client Strategy. B Strategy. A +Algorithm() Design patterns
State Название и классификация паттерна Состояние – паттерн поведения объектов. Назначение Позволяет объекту варьировать свое поведение в зависимости от внутреннего состояния. Извне создается впечатление, что изменился класс объекта. При помощи шаблона Состояние можно эффективно реализовать такую абстракцию как конечный автомат. Design patterns
State Context -state : IState +Request() Вызывает state. Handle() IState -context : Context +Handle() State. A +Handle() Design patterns State. B +Handle()
Template Method Название и классификация паттерна Шаблонный метод – паттерн поведения классов. Назначение Шаблонный метод определяет основу алгоритма и позволяет подклассам переопределить некоторые шаги алгоритма, не изменяя его структуру в целом. Design patterns
Template Method Abstract. Class Template. Method() Primitive. Op 1() Primitive. Op 2() Concrete. Class Primitive. Op 1() Primitive. Op 2() Design patterns … Primitive. Op 1(); … Primitive. Op 2(); …
Chain of responsibility Название и классификация паттерна Цепочка обязанностей – паттерн поведения объектов. Назначение Позволяет избежать привязки отправителя запроса к его получателю, давая шанс обработать запрос нескольким объектам. Связывает объекты-получатели в цепочку и передает запрос вдоль этой цепочки, пока его не обработают. Design patterns
Chain of responsibility IHandler #successor : IHandler +Request () Client Handler 1 Handler 2 +Request () Design patterns Вызывает successor. Request(), если это необходимо
Command Название и классификация паттерна Команда – паттерн поведения объектов. Назначение Инкапсулирует запрос как объект, позволяя тем самым задавать параметры клиентов для обработки соответствующих запросов, ставить запросы в очередь или протоколировать их, а также поддерживать отмену операций. Design patterns
Command Client Invoker +Execute() Receiver +Action() Design patterns «interface» ICommand +Execute () Command -State +Execute () Вызывает receiver. Action()
Iterator Название и классификация паттерна Итератор – паттерн поведения объектов. Назначение Предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления. Известен также под именем Cursor (курсор) Design patterns
Iterator Client -collection for each c in collection do. Something () Design patterns «interface» IEnumerable +Get. Enumerator() Collection -structure +Get. Enumerator() +Other. Ops() for each s in structure yield return s
Mediator Название и классификация паттерна Посредник – паттерн поведения объектов. Назначение Определяет объект, инкапсулирующий способ взаимодействия множества объектов. Посредник обеспечивает слабую связанность системы, избавляя объекты от необходимости явно ссылаться друг на друга и позволяя тем самым независимо изменять взаимодействия между ними. Design patterns
Mediator Colleague -mediator : Mediator +Receive() +Send() Mediator -colleagues +Sign. On(in c : Colleague) +Send() Вызывает Send() у медиатора Вызывает Receive() у всех colleagues Design patterns
Observer Название и классификация паттерна Наблюдатель – паттерн поведения объектов. Назначение Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются. Известен также под именем Dependents (подчиненные) Publish-Subscribe (издатель-подписчик) Design patterns
Observer Notify() вызывает Update() Subject -state -Notify() +Attach() +Detach() «interface» IObserver +Update() Observer -subject : Subject -state +Update() Design patterns
Visitor Название и классификация паттерна Посетитель – паттерн поведения объектов. Назначение Описывает операцию, выполняемую с каждым объектом из некоторой структуры. Паттерн посетитель позволяет определить новую операцию, не изменяя классы этих объектов. Design patterns
Interpreter Название и классификация паттерна Посетитель – паттерн поведения объектов. Назначение Для заданного языка определяет представление его грамматики, а также интерпретатор предложений этого языка. Основная идея шаблона – определение класса для каждого символа языка. Вследствие этого выражение на языке представляется в виде композитной объектной структуры. Design patterns
Interpreter Context Client Abstract. Expression +Interpret(inout c : Context) Terminal. Expression +Interpret(inout c : Context) Design patterns Nonterminal. Expression +Interpret(inout c : Context)
Memento Название и классификация паттерна Хранитель – паттерн поведения объектов. Назначение Не нарушая инкапсуляции, фиксирует и выносит за пределы объекта его внутреннее состояние так, чтобы позднее можно было восстановить в нем объект. Известен также под именем Token (лексема) Design patterns
Memento Originator -state +Create. Memento() : Memento +Set. Memento(in m : Memento) Design patterns Memento -state +Memento(in state) +Get. State() Caretaker +memento