Patrón Prototype.
Ejemplo tipos de televisiones.
"El patrón prototype tiene como finalidad crear nuevos objetos duplicándolos, clonando una instancia creada previamente."
Se usa en un escenario donde sea necesario la creación de objetos parametrizados como "recién salidos de fábrica" ya listos para utilizarse, con la gran ventaja de la mejora de la performance: clonar objetos es más rápido que crearlos y luego darles valor a cada parametro en particular.
Este patrón debe ser utilizado cuando un sistema posea objetos con datos repetitivos, en cuanto a sus atributos: por ejemplo, si una biblioteca posee una gran cantidad de libros de una misma editorial, mismo idioma, etc. Hay que pensar en este patrón como si fuese un fábrica que tiene ciertas plantillas de ejemplos de sus productos y, a partir de estos prototipos, puede crear una gran cantidad de productos con esas características.
Este patrón debe ser utilizado cuando un sistema posea objetos con datos repetitivos, en cuanto a sus atributos: por ejemplo, si una biblioteca posee una gran cantidad de libros de una misma editorial, mismo idioma, etc. Hay que pensar en este patrón como si fuese un fábrica que tiene ciertas plantillas de ejemplos de sus productos y, a partir de estos prototipos, puede crear una gran cantidad de productos con esas características.
Diagrama UML:
Esquema UML |
Prototype: declara la interface del objeto que se clona. Suele ser una clase abstracta.
PrototypeConcreto:las clases en este papel implementan una operación por medio de la clonación de sí mismo.
Cliente: crea nuevos objetos pidiendo al prototipo que se clone.
Los objetos de Prototipo Concreto heredan de Prototype y de esta forma el patrón se asegura de que los objetos prototipo proporcionan un conjunto consistente de métodos para que los objetos clientes los utilicen.
Ejemplo:
Vamos a crear una clase de prototipos de TVs. Para ello crearemos la clase TV y dos subclases: LCD y Plasma. Según este esquema:
Clase TV:
Esta clase tiene el método Clone() que se encarga de hacer una copia de si misma y de devolverla.
->
Clase LCD:
El método clone() lo redefinimos segun las propiedades de los tv del tipo LCD ->
Clase Plasma:
El método clone() lo redefinimos segun las propiedades de los tv del tipo Plasma ->
Clase TVPrototype:
En esta clase, predefinimos los distintos tipos que va a tener el cliente disponible.
->
Programa Principal:
->
Ejemplo de la aplicación funcionando:
enlace de descarga del ejemplo completo: enlace desde box.com
Fuente:
http://migranitodejava.blogspot.com.es/search/label/Prototype