Padrões de projeto - flyweight e prototype
Alisson Kenji Tanaka
Boris Pires Teixeira
Eduardo Augusto Araújo de Oliveira
Rafael Nakamura de Souza
Vinícius Rodrigues Geraldino
PADRÕES DE PROJETO
PROTOTYPE E FLYWEIGHT
LONDRINA
2012
Design Pattern Prototype
Intenção
Este padrão de projeto permite a especificar a criação de objetos a partir de um modelo original, criando novos objetos pela cópia deste protótipo.
Motivação
A criação de classes se faz mais simples quando é possível partir de um exemplo, para então criar as especializações condizentes com as necessidades do domínio da aplicação.
Uma alternativa é criar classes especializadas que herdem, ou seja, que sejam subclasses, de uma classe com atributos e métodos mais genéricos (ou até mesmo uma classe abstrata) com parâmetros de visibilidade acessíveis, alterando-os apenas quando for preciso na criação da classe especializada.
Entretanto, essa alternativa apresenta um problema de ordem prática: a geração excessiva de classes especializadas (ou subclasses), para cada necessidade específica, pode “inchar” o sistema, fazendo com que essas classes sempre sejam carregadas, mesmo que o seu uso seja reduzido.
Ainda, tratando-se de visibilidade, para a criação de subclasses, estas devem conhecer a superclasse que lhes fornecerá as características comuns a elas, para que, então, sejam diferenciadas, segundo as necessidades de cada objeto.
Para sistemas remotos, nem sempre isso é possível: na maioria das situações, um servidor de classes fica isolado dos clientes, e estes não podem conhecer a estrutura da superclasse; apenas podem saber dos parâmetros – a serem informados em chamadas de métodos – que participam da criação de produtos (que no caso, seriam as subclasses).
Nesse contexto, Prototype se dispõe a simplificar a criação de novas classes a partir de uma classe-exemplo, copiando-a fielmente, para que, nessa cópia, sejam feitas as