Padrões-07 - Padrões Criacionais

zagari 2,064 views 12 slides Mar 29, 2010
Slide 1
Slide 1 of 12
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12

About This Presentation

Padrões de Projeto. Padrões Criacionais.


Slide Content

Padrões de Projeto
Padrões Criacionais

2 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Padrões Criacionais
• Abstraem o processo de instanciação
– Sistema independente de como seus objetos
são criados, compostos e representados
– Um padrão criacional:
• De classe: usa herança para variar a classe que é
instanciada
• De objeto: delega instanciação a outro objeto
• Sistemas hoje dependem mais de
composição de objetos do que de herança
de classes

3 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Padrões Criacionais
• Características comuns do padrões
criacionais:
– Todos eles encapsulam o conhecimento
sobre quais classes concretas o sistema usa
– Escondem como as instâncias destas classes
são criadas e postas juntas
• Alguns são complementares, outros são
“competidores”

4 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Exemplo: um jogo de labirinto
• Um labirinto (Maze) é um conjunto de
cômodos (Room)
• Um cômodo conhece seus “vizinhos”
• “Vizinhos” podem ser outro cômodo, uma
parede (Wall) ou uma porta (Door) para
outro cômodo
• Cada cômodo tem 4 lados:
enum Direction (North, South,
East, West);

5 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Diagrama de Classes do Jogo de
Labirinto

6 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Classe MapSite

7 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Classe Room

8 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Classes Wall e Door

9 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Classe Maze

10 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Classe MazeGame

11 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Considerações
• O problema com este código não está no
tamanho e sim em sua inflexibilidade
• Mudar o labirinto implica em reescrever o
código (reimplementar) ou mudar partes
(o que está sujeito a erros, além de não
promover reuso)
– Padrões criacionais tornam mais fácil mudar
as classes que definem os componentes do
labirinto

12 Livro Texto: Design Pattern - Elements
of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Reuso do layout do Labirinto
• Suponha um novo labirinto com:
– DoorNeedingSpell
– EnchantedRoom
• Seria necessário recodificar as partes que instanciam estas
classes
• Padrões criacionais provêem diferentes formas de se
remover estas referências explícitas a classes concretas:
– Chamando funções virtuais (Factory)
– Passando objetos com parâmetros (Abstract Factory)
– Usando herança para mudar partes (Builder)
– Usando parametrização (Protótipo)