O Prototype é um padrão de projeto criacional que permite a clonagem de objetos, mesmo complexos, sem acoplamento à suas classes específicas.
Todas as classes de prototypes(protótipos) devem ter uma interface comum que permita copiar objetos, mesmo que suas classes concretas sejam desconhecidas. Objetos protótipos podem produzir cópias completas, pois objetos da mesma classe podem acessar os campos privados um do outro.
Exemplos de uso: O padrão Prototype está disponível no PHP pronto para uso. Você pode usar a palavra-chave clone para criar uma cópia exata de um objeto. Para adicionar suporte de clonagem a uma classe, você precisa implementar um método __clone.
Identificação: O prototype pode ser facilmente reconhecido pelos métodos clone ou copy, etc.
Exemplo conceitual
Este exemplo ilustra a estrutura do padrão de projeto Prototype. Ele se concentra em responder a estas perguntas:
De quais classes ele consiste?
Quais papéis essas classes desempenham?
De que maneira os elementos do padrão estão relacionados?
Depois de aprender sobre a estrutura do padrão, será mais fácil entender o exemplo a seguir, com base em um caso de uso PHP do mundo real.
index.php: Exemplo conceitual
Output.txt: Resultados da execução
Exemplo do mundo real
O padrão Prototype fornece uma maneira conveniente de replicar objetos existentes, em vez de tentar reconstruir os objetos copiando todos os seus campos diretamente. A abordagem direta não só acopla você às classes dos objetos que estão sendo clonados, mas também não permite copiar o conteúdo dos campos privados. O padrão Prototype permite executar a clonagem no contexto da classe clonada, onde o acesso aos campos privados da classe não é restrito.
Este exemplo mostra como clonar um objeto Page complexo usando o padrão Prototype. A classe Page possui muitos campos privados, que serão transferidos para o objeto clonado, graças ao padrão Prototype.