28 de julho de 2010

Design Patterns – Patterns Criacionais: Prototype

escrito por Ruppel, enquanto Engenheiro

A penúltima pattern criacional do livro Design Patterns têm uma motivação muito semelhante à pattern anterior, Factory. A prototype é usada quando você precisa instanciar um tipo não conhecido em tempo de compilação. Essa motivação também foi vista no uso das factories, com a diferença de que, com o Prototype, não há a criação de uma hierarquia paralela de classes, situação que foi vista com a Factory.

O funcionamento da Prototype é muito simples: para criação de um novo objeto você utiliza uma instância pré-existente desse objeto (um protótipo) e pede a ele mesmo que crie um clone.

A única dependência que você cria no seu sistema é de que essa interface comum passe a conter um método Clone, como mostra a figura abaixo.

Prototype

Essa pattern torna o cliente não dependente dos produtos concretos, diferentemente por exemplo da Builder (engraçado que o livro fala que a Builder também é independente, mas acho que erraram…. do alto da minha modéstia…rs).

E a grande vantagem dessa pattern é a simplicidade. Porém tendo que pagar o preço de implementar um método Clone, que pode não ser muito simples.