Diferenças entre edições de "Prototype"

1 987 bytes removidos ,  01h39min de 18 de novembro de 2011
Removendo trechos copiados de [http://books.google.com/books?id=V0Ey1KF3zwcC&lpg=PA124&ots=jR_fzXc700&dq=o%20padr%C3%A3o%20Prototype%20%C3%A9%20particularmente%20%C3%BAtil%20em%20linguagens%20est%C3%A1ticas%20como%20C%2B%2B&hl=pt-BR&pg=PA124#v=onepag
(Removendo trechos copiados de [http://books.google.com/books?id=V0Ey1KF3zwcC&lpg=PA124&ots=jR_fzXc700&dq=o%20padr%C3%A3o%20Prototype%20%C3%A9%20particularmente%20%C3%BAtil%20em%20linguagens%20est%C3%A1ticas%20como%20C%2B%2B&hl=pt-BR&pg=PA124#v=onepag)
* ''cliente'' — cria um novo objeto através de um ''prototype'' que é capaz de clonar a si mesmo.
 
Efetivamente, cada objeto é, ele próprio, um ''[[Abstract Factory|factory]]'' especializado em construir objetos iguais a si mesmo. UtilizadoO padrão Prototype é utilizado freqüentemente em linguagens estaticamente tipadas como [[C++]] e [[Java (linguagem de programação)|Java]], e menos freqüentemente utilizadas em linguagens dinamicamente tipadas como [[Smalltalk]].
 
EsteO 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).
 
==Utilização==
 
Quando utiliza o ''[[framework]]'' [[Spring Framework|Spring]], por exemplo, um desenvolvedor pode configurar um [[javabeans|JavaBean]] como "prototype". Esta configuração faz com que cada uma das referências a um JavaBean aponte para uma instância diferente. O comportamento padrão, ou ''[[singleton]]'', define que todas as referências a um JavaBean apontem para a mesma instância de uma classe.<ref>{{citar web|url=http://www.springframework.org/docs/reference/beans.html#beans-factory-scopes-prototype|titulo=The Spring Framework - Reference Documentation|autor=Rod Johnson, Juergen Hoeller, Alef Arendsen, Colin Sampaleanu, Rob Harrop, Thomas Risberg, Darren Davison, Dmitriy Kopylenko, Mark Pollack, Thierry Templier, Erwin Vervaet, Portia Tung, Ben Hale, Adrian Colyer, John Lewis, Costin Leau, Rick Evans|lingua=Inglês|acessodata=13 de junho de 2007}}</ref>
 
== Consequências ==
 
De acordo com o livro [[Padroes de Projeto: Soluções reutilizáveis de software orientado a objetos]]<ref> {{citar web |url =http://books.google.com.br/books?hl=pt-BR&lr=lang_pt&id=V0Ey1KF3zwcC&oi=fnd&pg=PA17&dq=padr%C3%A3o+de+projeto+prototype&ots=jR_fxWkb2-&sig=TCBavtIb7R5z3tD7SgOg3K2TXXc#v=onepage&q=padr%C3%A3o%20de%20projeto%20prototype&f=false| autor = Erich Gamma, Ralph Johnson,John Vlissides ,RICHARD HELM}}</ref> a utilização do padrão Prototype tem muitas das mesmas consequências dos padrões Factory e Builder como ocultar as classes de produtos concretos do cliente. Dessa forma reduzindo a quantidade de nomes que o cliente necessita saber. Além disso, este padrão permite ao cliente trabalhar com classes específicas de uma aplicação se necessidade de modificação.
 
Outras vantagens deste padrão são:
* Acrescenta e remove produtos em tempo de execução;
* Especifica novos objetos pela variação de valores;
* Especifica novos objetos pela variação de estrutura;
* Reduz o número de subclasses;
* Configura dinamicamente uma aplicação com classes.
 
O principal ponto fraco deste padrão é a necessidade de implementação da operação clone em cada subclasse, classe concreta.
 
==Implementação==
 
De acordo com o livro[[Padroes de Projeto: Soluções reutilizáveis de software orientado a objetos]] o padrão Prototype é particularmente útil em linguagens estáticas como C++ e java o qual as classes não são objetos e pouca ou nenhuma informação sobre tipos é está disponível em tempo de execução.
 
Ao se implementar protótipos leva-se em consideração os seguintes aspectos:
* Utilização de um gerenciador de protótipos;
* Implementação da operação clone;
* Iniciar clones.
 
==Exemplo==
==Bibliografia==
* {{Referência a livro|Autor=[[Erich Gamma]], [[Richard Helm]], [[Ralph Johnson]], [[John Vlissides]]|Título=Design Patterns|Subtítulo=Elements of Reusable Object-Oriented Software|Edição=1|Local de publicação=[[Estados Unidos da América]]|Editora=Addison-Wesley|Ano=1995|ID=ISBN 0-201-63361-2}}
 
* {{Referência a livro|Autor=[[Erich Gamma]], [[Richard Helm]], [[Ralph Johnson]], [[John Vlissides]]|Título=Padrões de projetos|Subtítulo=Soluções reutilizáveis de software orientado a objetos|Local de publicação=[[Brasil]]|Editora=Bookman}}
 
{{Padrões de projeto}}
22 741

edições