Professional Documents
Culture Documents
Abstract Factory
Adapter
Client
Client
<<interface>>
ITarget
-productA: AbstractProductA
-productB: AbstractProductB
+MethodA()
+Client(factory: AbstractFactory)
AbstractProductA
AbstractFactory
Adapter
AbstractProductB
Adaptee
-adaptee: Adaptee
+CreateProductA(): AbstractProductA
+CreateProductB(): AbstractProductB
+MethodB()
+MethodA()
ConcreteProductA1
ConcreteProductB1
ConcreteFactoryA
Bridge
+CreateProductA(): AbstractProductA
+CreateProductB(): AbstractProductB
ConcreteProductA2
ConcreteProductB2
+Implementer: ImplementationBase
+CreateProductA(): AbstractProductA
+CreateProductB(): AbstractProductB
ImplementationBase
Abstraction
ConcreteFactoryB
+OperationImplementation()
+Operation()
RefinedAbstraction
ConcreteImplementation
+Implementer: ImplementationBase
+OperationImplementation()
+Operation()
Composite
Prototype
Component
Prototype
+Clone(): Prototype
ConcretePrototypeA
ConcretePrototypeB
+Clone(): Prototype
+Clone(): Prototype
<<interface>>
IEnumerable<Component>
+Operation()
children
Leaf
Composite
-children: Component[0..*]
+Operation()
+Operation()
+AddChild(child: Component): void
+RemoveChild(child: Component): void
+GetChild(index: int): Component
Decorator
Builder
ComponentBase
+Operation()
Director
Builder
+BuildPart1(): void
+BuildPartX(): void
+GetProduct(): Product
Product
constructs
ConcreteBuilder
+BuildPart1(): void
+BuildPartX(): void
+GetProduct(): Product
DecoratorBase
ConcreteComponent
-Component: ComponentBase
+Operation()
+DecoratorBase(Component: ComponentBase)
+Operation()
ConcreteDecorator
+Operation()
+AdditionalOperation()
Facade
Flyweight
FlyweightFactory
-Flyweights: FlyweightBase[*]
Package A
ClassA1
Factory Method
+GetFlyweight(key): FlyweightBase
ClassA2
Facade
FlyweightBase
ProductBase
FactoryBase
+FactoryMethod(): ProductBase
ConcreteProduct
ConcreteFactory
+FactoryMethod(): ProductBase
+PerformAction()
+StatefulOperation(state)
Package B
ClassB1
ClassB2
ConcreteFlyweight
Singleton
Singleton
-instance: Singleton
-Singleton()
+GetSingleton(): Singleton
Proxy
SubjectBase
+PerformAction()
Proxy
-realSubject: RealSubject
+PerformAction()
http://www.blackwasp.co.uk
UnsharedFlyweight
RealSubject
+PerformAction()
Chain of Responsibility
HandlerBase
Client
The chain of
responsibility pattern is
used to process varied
requests, each of which
may be dealt with by a
different handler.
+Successor: HandlerBase
+HandleRequest(request)
ConcreteHandlerA
ConcreteHandlerB
+HandleRequest(request)
+HandleRequest(request)
Memento
Originator
Memento
-state
-state
+CreateMemento(): Memento
+SetMemento(memento: Memento)
+ctor(state)
+GetState()
Caretaker
+Memento: Memento
Command
Observer
+Command: CommandBase
#receiver: Receiver
+ExecuteCommand()
+Execute()
Client
CommandBase
Invoker
+ctor(receiver: Receiver)
Receiver
ConcreteCommand
+Parameter
+Action()
+Execute()
Interpreter
SubjectBase
ObserverBase
-observers: ObserverBase[0..*]
+Attach(o: Observer)
+Detach(o: Observer)
+Notify()
ConcreteSubject
ConcreteObserver
-state
-subject: ConcreteSubject
+GetState()
+Update()
State
StateBase
Context
+State: StateBase
Client
Context
ExpressionBase
+Interpret(context: Context)
TerminalExpression
NonterminalExpression
+Update()
+Handle(context: Context)
+ctor(state: StateBase)
+Request()
ConcreteStateA
ConcreteStateB
+Handle(context: Context)
+Handle(context: Context)
Strategy
-expression: ExpressionBase
+Interpret(context: Context)
+Strategy: StrategyBase
+Algorithm()
+CallAlgorithm()
Iterator
Client
AggregateBase
IteratorBase
+CreateIterator(): IteratorBase
+First(): object
+Next(): object
+CurrentItem(): object
+IsDone(): bool
ConcreteAggregate
ConcreteIterator
+CreateIterator(): IteratorBase
StrategyBase
Client
+Interpret(context: Context)
ConcreteStrategyA
ConcreteStrategyB
+Algorithm()
+Algorithm()
Template Method
AlgorithmBase
+TemplateMethod()
+Step1()
+Step2()
+Step3()
ConcreteAlgorithmA
ConcreteAlgorithmB
+Step1()
+Step2()
+Step3()
+Step1()
+Step2()
+Step3()
-aggregate: ConcreteAggregate
+First(): object
+Next(): object
+CurrentItem(): object
+IsDone(): bool
Visitor
Mediator
Client
MediatorBase
ColleagueBase
#mediator: MediatorBase
+SendMessage(caller: ColleagueBase)
+ctor(mediator: MediatorBase)
+Accept(visitor: VisitorBase)
ConcreteMediator
+Colleague1: ColleagueA
+Colleague2: ColleagueB
+SendMessage(caller: ColleagueBase)
ConcreteColleagueA
ConcreteColleagueB
+Send()
+Receive()
+Send()
+Receive()
http://www.blackwasp.co.uk
VisitorBase
ObjectStructure
+Elements: ElementBase[0..*]
+Visit(element: ConcreteElementA)
+Visit(element: ConcreteElementB)
ElementBase
ConcreteVisitorA
ConcreteVisitorB
+Accept(visitor: VisitorBase)
+Visit(element: ConcreteElementA)
+Visit(element: ConcreteElementB)
+Visit(element: ConcreteElementA)
+Visit(element: ConcreteElementB)
ConcreteElementA
ConcreteElementB
+Accept(visitor: VisitorBase)
+Accept(visitor: VisitorBase)