+CreateProductA()+CreateProductB()
AbstractFactory
+CreateProductA()+CreateProductB()
ConcreteFactory1
+CreateProductA()+CreateProductB()
ConcreteFactory2
Client
AbstractProductA
AbstractProductB
ProductA1 ProductA2
ProductB1 ProductB2
Client
+Request()
Target
+Request()
Adapter
+SpecificRequest()
Adaptee
adaptee.SpecificRequest()
Abstract Factory
Adapter
Bridge
Client
+Operation()
Abstraction
+OperationImp()
Implementor
RefinedAbstraction
+OperationImp()
ConcreteImplementorA
+OperationImp()
ConcreteImplementorB
implementor.OperationImp()
Builder
+Construct()
Director
+BuildPart()
Builder
+BuildPart()+GetResult()
ConcreteBuilderforeach item in structure builder.BuildPart() Product
Chain
Client
+HandleRequest()
Handler
+HandleRequest()
ConcreteHandler1
+HandleRequest()
ConcreteHandler2
Command
Client Invoker
+Execute()
Command
+Action()
Receiver
+Execute()
-state
ConcreteCommand
receiver.Action()
Composite
Client
+Operation()+Add(in Component)+Remove(in Component)+GetChild(in index : int)
Component
+Operation()
Leaf
+Operation()+Add(in Component)+Remove(in Component)+GetChild(in index : int)
Composite
foreach child in children child.Operation()
Decorator
+Operation()
Component
+Operation()
ConcreteComponent
+Operation()
Decorator
+Operation()
-addedState
ConcreteDecoratorA
+Operation()+AddedBehavior()
ConcreteDecoratorB
component.Operation()
base.Operation();AddedBehavior();
Façade
Facade
Subsystem
Factory Method
Product
ConcreteProduct
+FactoryMethod()+AnOperation()
Creator
+FactoryMethod()
ConcreteCreator
return new ConcreteProduct
product = FactoryMethod()
Flyweight
+GetFlyweight(in key)
FlyweightFactory
+Operation(in extrinsicState)
Flyweight
+Operation(in extrinsicState)
-intrinsicState
UnsharedConcreteFlyweight
+Operation(in extrinsicState)
-allState
ConcreteFlyweightClient
if flyweights[key] exists return existing flyweightelse create new flyweight add to pool of flyweights return new flyweight
Interpreter
Client
Context
+Interpret(in Context)
AbstractExpression
+Interpret(in Context)
TerminalExpression
+Interpret(in Context)
NonterminalExpression
Iterator
Mediator
Mediator
ConcreteMediator
Colleague
ConcreteColleague1 ConcreteColleague2
Client
+CreateIterator()
Aggregate
+First()+Next()+IsDone()+CurrentItem()
Iterator
+CreateIterator()
ConcreteAggregate ConcreteIterator
return new ConcreteIterator( this )
Memento
+SetMemento(in Memento)+CreateMemento()
-state
Originator
+GetState()+SetState()
-state
Memento Caretaker
return new Memento( state ) state = m.GetState()
Observer
+Attach(in Observer)+Detach(in Observer)+Notify()
Subject
+Update()
Observer
+GetState()
-subjectState
ConcreteSubject
+Update()
-observerState
ConcreteObserver
foreach o in observers o.Update()
return subjectStateobserverState = subject.GetState()
Prototype
+Clone()
Prototype
+Clone()
ConcretePrototype1
+Clone()
ConcretePrototype2
+Operation()
Client
p=prototype.Clone()
return copy of this return copy of this
Proxy
Client
+Request()
Subject
+Request()
RealSubject
+Request()
Proxy
realSubject.Request()
Singleton
-Singleton()+Instance()
-instance: Singleton
Singleton
return unique instance
State
+Request()
Context
+Handle()
State
+Handle()
ConcreteStateA
+Handle()
ConcreteStateB
state.Handle()
Strategy
+ContextInterface()
Context
+AlgorithmInterface()
Strategy
+AlgorithmInterface()
ConcreteStrategyA
+AlgorithmInterface()
ConcreteStrategyB
+AlgorithmInterface()
ConcreteStrategyC
Template
+TemplateMethod()+PrimitiveOperation1()+PrimitiveOperation2()
AbstractClass
+PrimitiveOperation1()+PrimitiveOperation2()
ConcreteClass
...PrimitiveOperation1()...PrimitiveOperation2()...
Visitor
+VisitConcreteElementA(in ConcreteElementA)+VisitConcreteElementB(in ConcreteElementB)
Visitor
+VisitConcreteElementA(in ConcreteElementA)+VisitConcreteElementB(in ConcreteElementB)
ConcreteVisitor1
+VisitConcreteElementA(in ConcreteElementA)+VisitConcreteElementB(in ConcreteElementB)
ConcreteVisitor2
ObjectStructure
+Accept(in visitor : Visitor)
Element
+Accept(in visitor : Visitor)+OperationA()
ConcreteElementA
+Accept(in visitor : Visitor)+OperationB()
ConcreteElementB
visitor.VisitConcreteElementA( this ) visitor.VisitConcreteElementB( this )
Client