Design Patterns
Prototype
Projeto de Sistemas de Software
Gustavo Soares Souza
[email protected]
Sumário
• Prototype
o
o
o
o
o
o
o
o
Propósito
Motivação
Aplicabilidade
Estrutura
Participantes
Colaboradores
Consequência
Exemplo
© LES/PUC-Rio
Design Patterns
–
–
–
–
–
–
–
–
–
–
–
–
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
•
•
•
•
•
•
•
•
•
•
•
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Padrões de Criação
Padrões Estruturais
Padrões de Comportamento
© LES/PUC-Rio
Prototype
Motivação
• Evitar o custo computacional na criação de objetos com a
palavra chave new como a maioria dos padrões de criação
sugerem
• Imagine um cientista trabalhando em um laboratório que
deseja poder clonar animais, preservando todo o seu
material genético
• Para cada tipo de animal o cientista já tem um modelo
(protótipo) já pronto para clone
• Fazendo uma abstração para sistemas de softwares, o ideal
seria que o cientista nao precisasse conhecer os protótipos
existentes para cada um dos animais, ele apenas diz para a
classe Animal, por exemplo, que ele deseja clonar uma
ovelha
© LES/PUC-Rio
Prototype
Propósito
• Criar objetos específicos a partir da instância de um
protótipo, permitindo criar novos objetos a partir da cópia
(clone) deste protótipo
• Objetos são criados a partir de um modelo
© LES/PUC-Rio
Prototype
Aplicabilidade
• Altamente recomendado quando um sistema precisa ser independente da
forma como seus componentes são criados, representados e compostos
• Quando as classes a serem instanciadas são especificadas em tempo de
execucação
• Sistemas onde pode ser conveniente disponibilizar um conjunto préestabelecido de protótipos que dão origem aos objetos que compoe o sistema
© LES/PUC-Rio
Prototype
Estrutura
© LES/PUC-Rio
Prototype
Participantes
• Prototype
o
•
interface ou classe abstrata que define o método para clonar a
si próprio
ConcretePrototype
o implementa o método para clonar a si próprio
• Client
o cria um novo objeto solicitando a um protótipo uma cópia de si
mesmo
© LES/PUC-Rio
Prototype
Colaboração
• A interação entre os participantes deste padrão é bem simples. Um cliente
requisita a um Protótipo um clone de si próprio
© LES/PUC-Rio
Prototype
Consequência
• Adição e remoção de classes em tempos de execução
• Redução do número de subclasses, uma vez que se pode clonar um protótipo
em vez de pedir a um método (Abstract Factory) para construir um novo objeto.
• O cliente tem que interagir com a interface (ou classe abstrata) Prototype, já
que a classe ConcretePrototype estão isoladas do cliente
• Cada subclasse (ConcretePrototype) tem que implementar o método clone,
caso contrário a clonagem não será possível. Isso se torna difícil para classe que
já existem no sistema
© LES/PUC-Rio
Prototype
Exemplo
© LES/PUC-Rio
Prototype
Exemplo
© LES/PUC-Rio
Fim!!
Download

Slides