Your SlideShare is downloading. ×
Padrões-07 - Padrões Criacionais
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Padrões-07 - Padrões Criacionais

1,778
views

Published on

Padrões de Projeto. Padrões Criacionais.

Padrões de Projeto. Padrões Criacionais.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,778
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
80
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Padrões de Projeto Padrões Criacionais
  • 2. 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 2 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 3. 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” 3 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 4. 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); 4 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 5. Diagrama de Classes do Jogo de Labirinto 5 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 6. Classe MapSite 6 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 7. Classe Room 7 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 8. Classes Wall e Door 8 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 9. Classe Maze 9 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 10. Classe MazeGame 10 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 11. 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 11 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma
  • 12. 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) 12 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma