Design Pattern Dr. Zhen Jiang West Chester University E-mail: [email protected] url: zjiang.

37
Design Pattern Design Pattern Dr. Zhen Jiang West Chester University E-mail: [email protected] url: www.cs.wcupa.edu/~zjiang

Transcript of Design Pattern Dr. Zhen Jiang West Chester University E-mail: [email protected] url: zjiang.

Page 1: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Design PatternDesign Pattern

Dr. Zhen JiangWest Chester University

E-mail: [email protected]: www.cs.wcupa.edu/~zjiang

Page 2: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

OutlineOutline

IntroductionCreational PatternsStructural PatternsBehavioral Patterns

Page 3: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

IntroductionIntroduction A design pattern names, abstracts, and identifies the

key aspects of a common design structure that make it useful for creating a reusable object-oriented design

Creational design patterns abstracts the instantiation process

Structural patterns are concerned with how classes and objects are composed to form larger structures.

Behavioral patterns are concerned with algorithms and assignment of responsibilities between objects.

Page 4: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Creational PatternCreational Pattern

Abstract factoryBuilderFactory MethodPrototypeSingleton

Page 5: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Abstract FactoryAbstract Factory

ClientWidgetFactory

Motif

Consider a user interface (client, windows and ScrollBar) that supports (creates) multiple look-and-feel standards.

PMW

Windows

PMW Motif

ScrollBar

PMW Motif

?

Page 6: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Abstract FactoryAbstract Factory

ClientAbstractFactory

Factory1 Factory2

ProductA

PA2 PA1

ProductB

PB2 PB1

Page 7: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Abstract FactoryAbstract Factory Shopping, interlibrary, …

Page 8: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

BuilderBuilder

Reader/User

Add a new conversion?

Converter

ACS Widget

Text Picture

Page 9: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

BuilderBuilder

Reader/User Builder

ConcreteBuilder

Product

Page 10: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

BuilderBuilder Add a new tool, new course, new equipment, …

Page 11: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Factor MethodFactor Method For creating objects Drink, Drug, vegetables, gardening, …

CreatorProduct

ConcreteProduct ConcreteCreator

Page 12: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

PrototypePrototype Provide an abstract tool for defining items like

those in the palette. Windows creation

PrototypeClient

movement

clone

Prototype1

clone

Prototype2

clone

Page 13: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

SingletonSingleton For some classes to have exactly one instance Examples?

Page 14: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Structural PatternStructural Pattern

AdapterBridgeCompositeDecoratorFaçadeFlyweightProxy

Page 15: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

AdapterAdapter For existing and unrelated classes working in an

application that expects classes with a different and incompatible interfaces (Builder?)

Unix process, file system, …

TargetClient

Adapter

request

Adaptee

implementation

Page 16: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

BridgeBridge Inheritance binding (Builder? AbstractFactory?) Windows (their structure and implementation),

Database?

RefinedAbstraction

Abstraction Implementor

IA IB

Page 17: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

CompositeComposite Group components

Component

Leaf Composite

Page 18: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

CompositeComposite

aComposite (is aComponent)

aComponent aComponentaComponentaLeaf aLeaf aComposite

aComponentaComponent

aLeaf aLeaf

Page 19: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

DecoratorDecorator Specifying the responsibility of certain group,

build an transparent interface to component’s client

Teaching, GA, and Instructor

Component

Leaf Decorator

DA DBops

ops ops

Page 20: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

FacadeFacade Simplifying interface to more general facilities of

subsystems. (AbstractFactory, FactorMethod, Bridge)

Current screen status of Windows?

Facade

Page 21: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

FlyweightFlyweight For sharing resource

Client

FlyWeight

ConcreteFlyWeight

Page 22: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

FlyweightFlyweight

aClient

aClientaFlyWeight

aCF

aCF

Page 23: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

FlyweightFlyweight

Paragraph and Keys of keyboard?

Page 24: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

ProxyProxy Access control and reference

Subject

RealSubjectProxy

aClient

aProxy

aRS

Page 25: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

ProxyProxy Network Service?

Page 26: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Behavioral PatternBehavioral Pattern Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor

Page 27: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Chain of ResponsibilityChain of Responsibility Decouple senders and receivers (sequence? ) Steps, courses, …

Handler

aHandleraHandler

aHandler

Page 28: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

CommandCommand Request, command, …? Dos/Shell command, file I/O, user interface, …?

Invoker Command

ConcreteCommandReceiver

Page 29: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

InterpreterInterpreter Grammar Composite? Formal language L=a|bC; C=e|cC. (sample

statement: a, b, bc, bcc, …

Page 30: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

IteratorIterator Access without exposing any internal structure Interface FactorMethod

Page 31: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

MediatorMediator Distribution of behavior among objects AbstractFactory

Mediator

ConcreteMediator

Colleague

CC1 CC2

Page 32: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

MementoMemento Record the internal state (checkpoints) Tests of course, firewall, …?

Originator Memento Caretaker

Page 33: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

ObserverObserver Maintain consistency Observer calls Getstatus( ) Ordering, TCP communication, …

Subject

ConcreteSubject

Observer

ConcreteObserver

Page 34: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

StateState Conditional statements Used in Command, Memento, Observer, … Project, study, …,

Context State

ConcreteStateA

ConcreteStateB

Page 35: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

StrategyStrategy Builder, Prototype, Bridge, Command, State. Hollywoodsquare, Chess, searching and sorting

(for example, shell), …

Context Strategy

ConcreteStrategyA

ConcreteStrategyB

Page 36: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

Template MethodTemplate Method A template method defines an algorithm in terms

of abstract operations that subclasses override to provide concrete behavior

Inheritance (generalization), virtual function Operations (searching and sorting) in Template

class (Template Stack, Template Queue).

AbstractClass

ConcreteClass

Page 37: Design Pattern Dr. Zhen Jiang West Chester University E-mail: zjiang@wcupa.edu url: zjiang.

VisitorVisitor Packaging related operations from each class in a

separate object, called a visitor, and passing it to elements of the abstract syntax tree as it’s traversed.

Visitor

ConcreteVisitorA

ConcreteAcceptAConcreteAcceptB

ConcreteAcceptA

ConcreteVisitorB

ConcreteAcceptB