Prototype

16
Grupo GWTED Grupo GWTED Davidson S. Marques Elias Rodrigues de Oliveira Gabriela Borges Diniz Teixeira Thiago César Eufrásio da Costa

description

 

Transcript of Prototype

Page 1: Prototype

Grupo GWTEDGrupo GWTEDDavidson S. MarquesElias Rodrigues de OliveiraGabriela Borges Diniz TeixeiraThiago César Eufrásio da CostaWalter Freitas de Brito

Page 2: Prototype

É um padrão de projeto que permite a criação de objetos a partir de um modelo original, ou seja, foi criado com o objetivo de especificar os tipos de objetos a serem criados usando uma instância-protótipo e criar novos objetos pela cópia desse protótipo. Efetivamente, cada objeto é um factory especializado em construir objetos iguais a si mesmo.

Page 3: Prototype

-Prototype - uma classe que declara uma interface para objetos capazes de clonar a si mesmo;

-Prototype concreto - implementação de um prototype;

-Cliente - cria um novo objeto através de um prototype que é capaz de clonar a si mesmo.

Page 4: Prototype

-Exige a implementação de uma operação de clonagem;

-Inconveniente, no caso do reaproveitamento de classes pré-existentes;

-Complexa, se for considerada a possibilidade de existirem referências circulares nos atributos de um objeto.

Page 5: Prototype

•Classes podem ser definidas em tempo de execução;

•Alternativa simples quando o padrão Abstract Factory se mostrar complexo, principalmente na questão de hierarquia;

•Conjunto inicial independente das variações.

Page 6: Prototype

-Quando um sistema tiver que ser independente de como os seus produtos são criados, compostos e representados;

-Quando as classes a instanciar forem especificadas em tempo de execução, por exemplo, por carga dinâmica;

Page 7: Prototype

-Para evitar a construção de uma hierarquia de classes de fábricas paralela à hierarquia de classes de produto;

-Quando as instâncias de uma classe puderem ter uma dentre poucas combinações diferentes de estados. Pode ser mais conveniente instalar um número correspondente de protótipos e cloná-los, ao invés de instanciar a classe manualmente, cada vez com um estado apropriado.

Page 8: Prototype

-Cada subclasse de Prototype deve implementar a operação clone, o que pode ser difícil. Por exemplo, acrescentar clone é difícil quando as classes consideradas já existem.

-A implementação de clone pode ser complicada quando uma estrutura interna da classe inclui objetos que não suportam operação de cópia ou têm referencias circulares.

Page 9: Prototype

Diagrama de classe:

Page 10: Prototype

Classe Main – será responsável por fazer as solicitações de clones de ovelhas.

Page 11: Prototype

Classe PrototypeFactory – retorna o clone de objetos quando solicitado pela classe Main.

Page 12: Prototype

Classe Ovelha – é o objeto que está sendo clonado. Ela implementa os métodos da classe abstrata Animal.

Page 13: Prototype

Classe Animal – É uma classe abstrata que implementa a interface Cloneable do Java que possui um método clone responsável por retornar clone de objetos quando implementado corretamente.

Page 14: Prototype

Saída:

Page 15: Prototype

Prototype assim como os outros Padrões de Projetos podem ser causadores de confiabilidade, reusabilidade e manutenibilidade de código. Também podem ser capazes de economizar tempo e custo. Podemos perceber que as vantagens são maiores que as desvantagens.

Page 16: Prototype

http://pt.wikipedia.org/wiki/Prototypehttp://www.guj.com.br/content/articles/patterns/prototype_pattern_guj.pdfhttp://www.devmedia.com.br/post-4597-Padroes-de-projeto-em--NET--Prototype.html