Você está na página 1de 16

Padro de Projeto:

Prototype
Aglair Pereira barroncas neto

Objetivo
Especificar os tipos de objetos para criar usando uma instncia prototpica e
criar
novos objetos copiando este prottipo.

Motivao
Um detalhe que torna o Prototype nico em
relao aos outros padres de criao que ele
utiliza objeto para criar os produtos, enquanto
os outros utilizam classes.
O padro Prototype leva grande vantagem
quando o processo de criao de seus produtos
muito caro, ou mais caro do que uma
clonagem. Os produtos do Prototype podem ser
alterados livremente apenas mudando os
atributos.

Aplicabilidade
Use o padro Prototype quando um sistema deve ser independente da
forma como os seus produtos so criado, composta, e representado. E
quando as classes instanciadas so especificados em tempo de execuo,
por exemplo,
carregamento dinmico.
evitar a construo de uma hierarquia de classes de fbricas que
paralela hierarquia de classe
de produtos.
quando as instncias de uma classe pode ter um de apenas algumas
combinaes diferentes de
estado. Pode ser mais conveniente instalar um nmero correspondente de
prottipos
e clon-los em vez de instanciar a classe manualmente, cada vez com o
estado apropriado.

Estrutura

Participantes
Prototype (grfico)
o declara uma interface para clonagem em si.
ConcretePrototype
O implementa uma operao para a clonagem em si.
Cliente (GraphicTool)
o cria um novo objeto, pedindo um prottipo para
clonar si.

Colaboraes

Um cliente pede um prottipo que se auto-duplique

Consequncias

Compartilha muitas das consequncias do


Abstract Factory e Builder:
Isola as classes concretas do cliente
Permite que clientes trabalhem com classes
especficas da aplicao sem requerer
modificaes
Adio e remoo de produtos em run-time

Consequncias
Positivas:
1. Acrescenta e remove produtos em tempo de execuo: Prototype permite
incorporar uma nova classe concreta de produto a um sistema,
simplesmente registrando uma instncia prottipo com o cliente. Isso um
pouco mais flexvel do que os outros padres de criao, porque o cliente
pode instalar e remover prottipos em tempo de execuo.
2. Especificar novos objetos pela variao de valores: Sistemas altamente
dinmicos permitem definir novos comportamentos atravs da composio
de objetos. O padro Prototype pode reduzir grandemente o nmero de
classes que um sistema necessita.
Negativas:
O principal ponto fraco do padro Prototype que cada subclasse de
Prototype deve implementar a operao Clone, o que pode ser difcil. Por
exemplo, acrescentar Clone difcil quando as classes consideradas j
existem. A implementao de Clone pode ser complicada quando uma

Implementao
Prototype particularmente til com linguagens estticas como
C ++, onde as classes no so objetos, e pouca ou nenhuma
informao de tipo est disponvel em tempo de execuo.
menos importante nas linguagens como Smalltalk ou
Objective C que fornecem o que equivale a um prottipo (ou
seja, uma classe de objeto) para a criao de instncias de
cada classe.
Este padro construdo em prototypebased linguagens como
Auto, em que toda a criao objeto acontece por clonagem de
um prottipo.

Padres Relacionados
Prototype e Abstract Factory so padres em algumas
maneiras concorrentes. Eles tambm podem ser
utilizados em conjunto, no entanto. Um Abstract
Factory pode armazenar um conjunto de prottipos a
partir do qual clonar e retornar objetos produtos.
Projetos que fazem uso pesado do composto e
Decorator padres muitas vezes podem se beneficiar
de Prototype tambm.

Exemplo de Uso
1. O primeiro exemplo do padro Prototype se
encontra no sistema Sketchpad de Ivan
Sutherlan.
2. A primeira aplicao amplamente conhecida
do padro numa linguagem orientada a objeto
foi em ThingLab, na qual os usurios poderiam
formar um objeto composto e ento promov-lo
a um prottipo pela sua instalao numa
biblioteca de objetos reutilizveis.

Exemplo de cdigo

Exemplo de cdigo

Exemplo de cdigo

Exemplo de cdigo

Exemplo de cdigo