Thienne Johnson
2. Objetivo / Inteno
5. Aplicabilidade
como reconhecer as situaes nas quais o padro
aplicvel
13
6. Estrutura
uma representao grfica da estrutura de classes do
padro
(usando OMT91) em, s vezes, diagramas de interao
(Booch 94)
7. Participantes
as classes e objetos que participam e quais so suas
responsabilidades
8. Colaboraes
como os participantes colaboram para exercer as suas
responsabilidades
14
9. Conseqncias
vantagens e desvantagens, trade-offs
10.Implementao
com quais detalhes devemos nos preocupar quando
implementamos o padro
aspectos especficos de cada linguagem
11.Exemplo de Cdigo
no caso do GoF, em C++ (a maioria) ou Smalltalk
15
12.Usos Conhecidos
exemplos de sistemas reais de domnios
diferentes onde o padro utilizado
13.Padres Relacionados
quais outros padres devem ser usados em
conjunto com esse
quais padres so similares a este, quais so as
dierenas
16
17
Abstract Factory
Builder
Factory Method
Prototype
Singleton
18
Adapter
Bridge
Composite
Decorator
Faade
Flyweight
Proxy
19
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
20
Propsito
Criao
Escopo
Estrutural
Comportamental
Classe
Adapter (157)
Interpreter (274)
Template Method (360)
Objeto
Adapter (157)
Bridge (171)
Composite (183)
Decorator (196)
Facade (208)
Flyweight (218)
Proxy (233)
Chain of Responsibility
(251)
Command (263)
Iterator (289)
Mediator (305)
Memento (316)
Observer (326)
State (338)
Strategy (349)
Visitor (366)
http://mahemoff.com/paper/software/learni
ngGoFPatterns/
Fcil
Intermedirio
Avanado
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Facade (185)
Singleton (127)
Mediator (273)
Iterator (257)
Strategy (315)
Command (233)
Builder (97)
State (305)
Template Method (325)
Factory Method (107)
Memento (283)
Prototype (117)
1.
2.
3.
4.
5.
Proxy (207)
Decorator (175)
Adapter (139)
Bridge (151)
Observer (293)
1.
2.
3.
4.
5.
Composite (163)
Interpreter (243)
Chain Of Responsibility (223)
Abstract Factory (87)
Visitor (331)
AccountService
User
createAccount()
deposit()
withdraw()
TransactionService
Faade
addTransaction()
createAccount()
deposit()
withdraw()
addTransaction()
applyForLoan()
LoanService
applyForLoan()
//FORA
public class Power {
public void connect() {
System.out.println("The power is connected.");
}
public void disconnect() {
System.out.println("The power is disconnected.");
}
}
// PLACAME
public class MainBoard {
public void on() {
System.out.println("The mainboard is on.");
}
public void off() {
System.out.println("The mainboard is off.");
}
}
//HDD HardDisk
public class HardDisk {
public void run() {
System.out.println("The harddisk is running.");
}
public void stop() {
System.out.println("The harddisk is stopped.");
}
}
// Sistema Operacional
public class OperationSystem {
public void startup() {
System.out.println("The opertion system is startup.");
}
public void shutdown() {
System.out.println("The operation system is shutdown.");
}
}
this.disk.run();
this.system.startup();
}
public void shutdown() {
this.system.shutdown();
this.disk.stop();
this.board.off();
this.power.disconnect();
}
}
Aplicaes
Um nico banco de dados
1 spooler de impresso
Um nico acesso ao arquivo de log
Um nico objeto que representa um vdeo
Uma nica fachada (Faade)
Participantes
Define uma operao getInstance() que permite que
clientes acessem sua instncia nica
um mtodo esttico (class method)
Pode ser responsvel pela criao de sua instncia
nica
Colaboraes
Clientes acessam a instncia apenas atravs da
operao getInstance() do Singleton
if (instance == null) {
instance = new Singleton();
}
return instance;
Abstract Factory
Builder
Prototype