Prototype

El prototipo es un patrón de diseño creacional que permite la clonación de objetos, incluso los más complejos, sin acoplarse a sus clases específicas. Además, existen muchos objetos con atributos privados, este patrón permite que se copien sin necesidad de acceder ellos. El patrón Prototype está disponible en Java con una Cloneable interfaz. Al clonar un objeto se debe tener cuidado de clonar sus atributos que sean por referencia, ya que sino ambos clones apuntaran al mismo atributo.

En el ejemplo asumimos que existen formas (shapes) que se dibujan en un canvas, y se quiere dar la funcionalidad de copiar y pegar. Se utiliza este patrón para poder clonar un shape y que su clon tenga todos sus atributos.

prototype

Ejemplo de uso:

Square square = new Square();
square.setWidth(100);
square.setHeight(100);
square.setX(20);
square.setY(20);
square.setColor(Color.BLACK);

System.out.printf("Original object: %s, new object: %s\n", square, square.clone()); // Salida ejemplo: Original object: pattern.creational.prototype.Square@39a054a5, new object: pattern.creational.prototype.Square@71bc1ae4

Código