Скачать презентацию Design patterns Anton Rodionov Decorator Название и Скачать презентацию Design patterns Anton Rodionov Decorator Название и

ООП приемы программирования, часть 1.pptx

  • Количество слайдов: 45

Design patterns Anton Rodionov Design patterns Anton Rodionov

Decorator Название и классификация паттерна Декоратор – паттерн, структурирующий объекты. Назначение Динамически добавляет объекту Decorator Название и классификация паттерна Декоратор – паттерн, структурирующий объекты. Назначение Динамически добавляет объекту новые обязанности. Является гибкой альтернативой порождению подклассов с целью расширения функциональности. Известен также под именем Wrapper (обертка) Design patterns

Decorator «interface» IComponent +Operation() Client Component +Operation() Design patterns Decorator -added. State -component : Decorator «interface» IComponent +Operation() Client Component +Operation() Design patterns Decorator -added. State -component : IComponent +Operation() +Added. Behavior()

Proxy Название и классификация паттерна Заместитель – паттерн, структурирующий объекты. Назначение Является суррогатом другого Proxy Название и классификация паттерна Заместитель – паттерн, структурирующий объекты. Назначение Является суррогатом другого объекта и контролирует доступ к нему. Позволяет создавать «тяжелые» объекты по требованию. Известен также под именем Surrogate (суррогат) Design patterns

Proxy Client «interface» IComponent +Operation() Design patterns Proxy +Operation() Перенаправляет запросы к Component Proxy Client «interface» IComponent +Operation() Design patterns Proxy +Operation() Перенаправляет запросы к Component

Singleton Название и классификация паттерна Одиночка – паттерн, порождающий объекты. Назначение Гарантирует, что у Singleton Название и классификация паттерна Одиночка – паттерн, порождающий объекты. Назначение Гарантирует, что у класса есть только один экземпляр, и предоставляет к нему глобальную точку доступа. Singleton -unique. Instance : Singleton = new Singleton() +Instance : Singleton -Singleton() Design patterns возвращает unique. Instance

Bridge Название и классификация паттерна Мост – паттерн, структурирующий объекты. Назначение Отделить абстракцию от Bridge Название и классификация паттерна Мост – паттерн, структурирующий объекты. Назначение Отделить абстракцию от реализации так, чтобы то и другое можно было изменять независимо. Известен также под именем Handle (описатель) Body (тело) Design patterns

Bridge Client Abstraction -bridge +Operation() Вызывает Operation. Imp () в bridge «interface» Bridge +Operation. Bridge Client Abstraction -bridge +Operation() Вызывает Operation. Imp () в bridge «interface» Bridge +Operation. Imp() Implementation. A +Operation. Imp() Design patterns Implementation. B +Operation. Imp()

Composite Название и классификация паттерна Компоновщик – паттерн, структурирующий объекты. Назначение Компонует объекты в Composite Название и классификация паттерна Компоновщик – паттерн, структурирующий объекты. Назначение Компонует объекты в древовидные структуры для представления иерархий часть-целое. Позволяет клиентам единообразно трактовать индивидуальные и составные объекты. Design patterns

Composite «interface» IComponent +Operation() Client Component +Operation() Design patterns * 1 Composite -list : Composite «interface» IComponent +Operation() Client Component +Operation() Design patterns * 1 Composite -list : IComponent +Operation() Вызывает Operation() у каждого компонента

Adapter Название и классификация паттерна Адаптер – паттерн, структурирующий классы и объекты. Назначение Преобразует Adapter Название и классификация паттерна Адаптер – паттерн, структурирующий классы и объекты. Назначение Преобразует интерфейс одного класса в интерфейс другого, который ожидают клиенты. Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна. Design patterns

Adapter Client «interface» ITarget +Request() Adaptee +Specific. Request() Adapter Request() вызывает Specific. Request() Design Adapter Client «interface» ITarget +Request() Adaptee +Specific. Request() Adapter Request() вызывает Specific. Request() Design patterns +Request()

Flyweight Название и классификация паттерна Приспособленец – паттерн, структурирующий объекты. Назначение Использует разделение для Flyweight Название и классификация паттерна Приспособленец – паттерн, структурирующий объекты. Назначение Использует разделение для эффективной поддержки множества мелких объектов. Основная проблема ‑ в затратах на хранение таких объектов, если их число велико, а содержащаяся информация дублируется. Design patterns

Flyweight Client -unshared. State Flyweight. Factory -flyweights : Dictionary «interface» IFlyweight +Operation() Flyweight -intrinsic. Flyweight Client -unshared. State Flyweight. Factory -flyweights : Dictionary «interface» IFlyweight +Operation() Flyweight -intrinsic. State +Operation() Design patterns extrinsic. State вычисляется при работе

Façade Название и классификация паттерна Фасад – паттерн, структурирующий объекты. Назначение Предоставляет унифицированный интерфейс Façade Название и классификация паттерна Фасад – паттерн, структурирующий объекты. Назначение Предоставляет унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы. Design patterns

Façade Library Subsystem. A Subsystem. B Subsystem. C Design patterns Facade -a : Subsystem. 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 Название и классификация паттерна Прототип – паттерн, порождающий объекты. Назначение Задает виды создаваемых Prototype Название и классификация паттерна Прототип – паттерн, порождающий объекты. Назначение Задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты, путем копирования этого прототипа. Design patterns

Prototype Client «interface» IPrototype +Clone() +Deep. Copy() Design patterns Prototype Client «interface» IPrototype +Clone() +Deep. Copy() Design patterns

Factory method Название и классификация паттерна Фабричный метод – паттерн, порождающий классы. Назначение Определяет Factory method Название и классификация паттерна Фабричный метод – паттерн, порождающий классы. Назначение Определяет интерфейс для создания объекта, но оставляет подклассам решение о том, какой класс инстанцировать. Фабричный метод позволяет классу делегировать инстанцирование подклассам. Известен также под именем Virtual Constructor (виртуальный конструктор) Design patterns

Factory method product = сreator. Factory. Method() «interface» IProduct Client -product : IProduct. A Factory method product = сreator. Factory. Method() «interface» IProduct Client -product : IProduct. A Creator +Factory. Method () : IProduct Design patterns Product. B

Abstract factory Название и классификация паттерна Абстрактная фабрика – паттерн, порождающий объекты. Назначение Предоставляет Abstract factory Название и классификация паттерна Абстрактная фабрика – паттерн, порождающий объекты. Назначение Предоставляет интерфейс для создания семейств взаимосвязанных или взаимозависимых объектов, не специфицируя их конкретных классов. Известен также под именем Kit (инструментарий) Design patterns

Abstract factory Client -a : IProduct. A -b : IProduct. B +Client(in parameter : 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 Название и классификация паттерна Строитель – паттерн, порождающий объекты. Назначение Отделяет конструирование сложного Builder Название и классификация паттерна Строитель – паттерн, порождающий объекты. Назначение Отделяет конструирование сложного объекта от его представления, так что результате одного и того же процесса конструирования могут получаться разные представления. Design patterns

Builder Client Director +Construct() : Product Вызывает Build. Part() по необходимости «interface» IBuilder +Build. Builder Client Director +Construct() : Product Вызывает Build. Part() по необходимости «interface» IBuilder +Build. Part() +Get. Result() : Product Design patterns Product -parts : List

Strategy Название и классификация паттерна Стратегия – паттерн поведения объектов. Назначение Определяет семейство алгоритмов, Strategy Название и классификация паттерна Стратегия – паттерн поведения объектов. Назначение Определяет семейство алгоритмов, инкапсулирует каждый их них и делает их взаимозаменяемыми. Стратегия позволяет изменять алгоритмы независимо от клиентов, которые ими пользуются. Известен также под именем Policy (политика) Design patterns

Strategy «interface» IStrategy +Algorithm() Client Strategy. B Strategy. A +Algorithm() Design patterns Strategy «interface» IStrategy +Algorithm() Client Strategy. B Strategy. A +Algorithm() Design patterns

State Название и классификация паттерна Состояние – паттерн поведения объектов. Назначение Позволяет объекту варьировать State Название и классификация паттерна Состояние – паттерн поведения объектов. Назначение Позволяет объекту варьировать свое поведение в зависимости от внутреннего состояния. Извне создается впечатление, что изменился класс объекта. При помощи шаблона Состояние можно эффективно реализовать такую абстракцию как конечный автомат. Design patterns

State Context -state : IState +Request() Вызывает state. Handle() IState -context : Context +Handle() State Context -state : IState +Request() Вызывает state. Handle() IState -context : Context +Handle() State. A +Handle() Design patterns State. B +Handle()

Template Method Название и классификация паттерна Шаблонный метод – паттерн поведения классов. Назначение Шаблонный Template Method Название и классификация паттерна Шаблонный метод – паттерн поведения классов. Назначение Шаблонный метод определяет основу алгоритма и позволяет подклассам переопределить некоторые шаги алгоритма, не изменяя его структуру в целом. Design patterns

Template Method Abstract. Class Template. Method() Primitive. Op 1() Primitive. Op 2() Concrete. Class 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 Название и классификация паттерна Цепочка обязанностей – паттерн поведения объектов. Назначение Chain of responsibility Название и классификация паттерна Цепочка обязанностей – паттерн поведения объектов. Назначение Позволяет избежать привязки отправителя запроса к его получателю, давая шанс обработать запрос нескольким объектам. Связывает объекты-получатели в цепочку и передает запрос вдоль этой цепочки, пока его не обработают. Design patterns

Chain of responsibility IHandler #successor : IHandler +Request () Client Handler 1 Handler 2 Chain of responsibility IHandler #successor : IHandler +Request () Client Handler 1 Handler 2 +Request () Design patterns Вызывает successor. Request(), если это необходимо

Command Название и классификация паттерна Команда – паттерн поведения объектов. Назначение Инкапсулирует запрос как Command Название и классификация паттерна Команда – паттерн поведения объектов. Назначение Инкапсулирует запрос как объект, позволяя тем самым задавать параметры клиентов для обработки соответствующих запросов, ставить запросы в очередь или протоколировать их, а также поддерживать отмену операций. Design patterns

Command Client Invoker +Execute() Receiver +Action() Design patterns «interface» ICommand +Execute () Command -State Command Client Invoker +Execute() Receiver +Action() Design patterns «interface» ICommand +Execute () Command -State +Execute () Вызывает receiver. Action()

Iterator Название и классификация паттерна Итератор – паттерн поведения объектов. Назначение Предоставляет способ последовательного Iterator Название и классификация паттерна Итератор – паттерн поведения объектов. Назначение Предоставляет способ последовательного доступа ко всем элементам составного объекта, не раскрывая его внутреннего представления. Известен также под именем Cursor (курсор) Design patterns

Iterator Client -collection for each c in collection do. Something () Design patterns «interface» 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 Название и классификация паттерна Посредник – паттерн поведения объектов. Назначение Определяет объект, инкапсулирующий Mediator Название и классификация паттерна Посредник – паттерн поведения объектов. Назначение Определяет объект, инкапсулирующий способ взаимодействия множества объектов. Посредник обеспечивает слабую связанность системы, избавляя объекты от необходимости явно ссылаться друг на друга и позволяя тем самым независимо изменять взаимодействия между ними. Design patterns

Mediator Colleague -mediator : Mediator +Receive() +Send() Mediator -colleagues +Sign. On(in c : Colleague) Mediator Colleague -mediator : Mediator +Receive() +Send() Mediator -colleagues +Sign. On(in c : Colleague) +Send() Вызывает Send() у медиатора Вызывает Receive() у всех colleagues Design patterns

Observer Название и классификация паттерна Наблюдатель – паттерн поведения объектов. Назначение Определяет зависимость типа Observer Название и классификация паттерна Наблюдатель – паттерн поведения объектов. Назначение Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом и автоматически обновляются. Известен также под именем Dependents (подчиненные) Publish-Subscribe (издатель-подписчик) Design patterns

Observer Notify() вызывает Update() Subject -state -Notify() +Attach() +Detach() «interface» IObserver +Update() Observer -subject Observer Notify() вызывает Update() Subject -state -Notify() +Attach() +Detach() «interface» IObserver +Update() Observer -subject : Subject -state +Update() Design patterns

Visitor Название и классификация паттерна Посетитель – паттерн поведения объектов. Назначение Описывает операцию, выполняемую Visitor Название и классификация паттерна Посетитель – паттерн поведения объектов. Назначение Описывает операцию, выполняемую с каждым объектом из некоторой структуры. Паттерн посетитель позволяет определить новую операцию, не изменяя классы этих объектов. Design patterns

Interpreter Название и классификация паттерна Посетитель – паттерн поведения объектов. Назначение Для заданного языка Interpreter Название и классификация паттерна Посетитель – паттерн поведения объектов. Назначение Для заданного языка определяет представление его грамматики, а также интерпретатор предложений этого языка. Основная идея шаблона – определение класса для каждого символа языка. Вследствие этого выражение на языке представляется в виде композитной объектной структуры. Design patterns

Interpreter Context Client Abstract. Expression +Interpret(inout c : Context) Terminal. Expression +Interpret(inout c : Interpreter Context Client Abstract. Expression +Interpret(inout c : Context) Terminal. Expression +Interpret(inout c : Context) Design patterns Nonterminal. Expression +Interpret(inout c : Context)

Memento Название и классификация паттерна Хранитель – паттерн поведения объектов. Назначение Не нарушая инкапсуляции, Memento Название и классификация паттерна Хранитель – паттерн поведения объектов. Назначение Не нарушая инкапсуляции, фиксирует и выносит за пределы объекта его внутреннее состояние так, чтобы позднее можно было восстановить в нем объект. Известен также под именем Token (лексема) Design patterns

Memento Originator -state +Create. Memento() : Memento +Set. Memento(in m : Memento) Design patterns Memento Originator -state +Create. Memento() : Memento +Set. Memento(in m : Memento) Design patterns Memento -state +Memento(in state) +Get. State() Caretaker +memento