Grupo GWTED
Davidson S. Marques
Elias Rodrigues de Oliveira
Gabriela Borges Diniz Teixeira
Thiago César Eufrásio da Costa
Walter Freitas de Brito
É 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.
O padrão Prototype contém os seguintes elementos:

• 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.
O padrão Prototype exige a implementação de uma operação de clonagem
em cada uma das classes concretas do protótipo. Esta tarefa pode ser
inconveniente, no caso do reaproveitamento de classes pré-existentes que
não possuem tal operação, ou mesmo complexa, se for considerada a
possibilidade de existirem referências circulares nos atributos de um
objeto (um objeto possui um atributo que referência um objeto que, por
sua vez, referência o objeto original).
O padrão Prototype pode ser utilizado em sistemas que precisam ser
independentes da forma como os seus componentes são
criados, compostos e representados. O padrão Prototype pode ser útil em
sistemas com as seguintes características:

• Sistemas que utilizam classes definidas em tempo de execução;
• Sistemas que utilizam o padrão Abstract Factory para criação de objetos.
  Neste caso, a hierarquia de classes pode se tornar muito complexa e o
  padrão Prototype pode ser uma alternativa mais simples, por realizar a
  mesma tarefa com um número reduzido de classes;
• Sistemas que possuem componentes cujo estado inicial possui poucas
  variações e onde é conveniente disponibilizar um conjunto pré-estabelecido
  de protótipos que dão origem aos objetos que compõem o sistema.
Use o padrão Prototype quando um sistema tiver que ser independente de
como os seus produtos são criados, compostos e representados e:
Quando as classes a instanciar forem especificadas em tempo de
execução, por exemplo, por carga dinâmica;
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.
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.
Diagrama de classe:
Classe Main – será responsável por fazer as solicitações de clones de ovelhas.
.
Classe PrototypeFactory – retorna o clone de objetos quando solicitado pela
classe Main.
Classe Ovelha – é o objeto que está sendo clonado. Ela implementa os
métodos da classe abstrata Animal.
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.
Saída:
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.
http://pt.wikipedia.org/wiki/Prototype
http://www.guj.com.br/content/articles/patterns/prototype_pattern_guj.pdf
http://www.devmedia.com.br/post-4597-Padroes-de-projeto-em--NET--Prototype.html

Prototype1 - thiago

  • 1.
    Grupo GWTED Davidson S.Marques Elias Rodrigues de Oliveira Gabriela Borges Diniz Teixeira Thiago César Eufrásio da Costa Walter Freitas de Brito
  • 2.
    É um padrãode 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.
  • 3.
    O padrão Prototypecontém os seguintes elementos: • 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.
  • 4.
    O padrão Prototypeexige a implementação de uma operação de clonagem em cada uma das classes concretas do protótipo. Esta tarefa pode ser inconveniente, no caso do reaproveitamento de classes pré-existentes que não possuem tal operação, ou mesmo complexa, se for considerada a possibilidade de existirem referências circulares nos atributos de um objeto (um objeto possui um atributo que referência um objeto que, por sua vez, referência o objeto original).
  • 5.
    O padrão Prototypepode ser utilizado em sistemas que precisam ser independentes da forma como os seus componentes são criados, compostos e representados. O padrão Prototype pode ser útil em sistemas com as seguintes características: • Sistemas que utilizam classes definidas em tempo de execução; • Sistemas que utilizam o padrão Abstract Factory para criação de objetos. Neste caso, a hierarquia de classes pode se tornar muito complexa e o padrão Prototype pode ser uma alternativa mais simples, por realizar a mesma tarefa com um número reduzido de classes; • Sistemas que possuem componentes cujo estado inicial possui poucas variações e onde é conveniente disponibilizar um conjunto pré-estabelecido de protótipos que dão origem aos objetos que compõem o sistema.
  • 6.
    Use o padrãoPrototype quando um sistema tiver que ser independente de como os seus produtos são criados, compostos e representados e: Quando as classes a instanciar forem especificadas em tempo de execução, por exemplo, por carga dinâmica; 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.
  • 7.
    Cada subclasse dePrototype 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.
  • 8.
  • 9.
    Classe Main –será responsável por fazer as solicitações de clones de ovelhas. .
  • 10.
    Classe PrototypeFactory –retorna o clone de objetos quando solicitado pela classe Main.
  • 11.
    Classe Ovelha –é o objeto que está sendo clonado. Ela implementa os métodos da classe abstrata Animal.
  • 12.
    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.
  • 13.
  • 14.
    Prototype assim comoos 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.
  • 15.