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

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

Embed Size (px)

Citation preview

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