Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ALGORITMO Y ESTRUCTURA DE
DATOS
TEMA:
PATRÓN PROTOTYPE
Integrantes:
Alcalá Valdiavia, Job
Lazo Janampa, Luis
Melendez Ramirez de Castilla, Jorge
Pajuelo Padin, Aldo
Segura Avalos, Roy
1
Índice
Contenido
Introducción ................................................................................................................................3
Patrón Prototype ........................................................................................................................4
Concepto Patrón Prototype: .................................................................................................4
Uso de patrón prototype .......................................................................................................4
Solución y Estructura: ...........................................................................................................4
Solución: .............................................................................................................................4
La estructura es la siguiente: ...........................................................................................5
Positivo y negativo: ...........................................................................................................5
Ejemplo .......................................................................................................................................6
Aplicación ...................................................................................................................................9
Aplicación 01 ..........................................................................................................................9
Clase TV: ............................................................................................................................9
Clase LCD: .......................................................................................................................11
Clase Plasma: ..................................................................................................................12
Clase TVPrototype: .........................................................................................................12
Programa Principal: -> ....................................................................................................13
Aplicación funcionando: ..................................................................................................14
Consecuencias ....................................................................................................................14
Conclusión. ...............................................................................................................................15
Bibliografía................................................................................................................................16
2
Introducción
3
Patrón Prototype
Una explicación más informal de esto sería algo así como, construir una jerarquía de
clases en las cuales, el primer objeto que se crea sea el prototipo, y a partir de este
momento, no se van a crear más nuevos objetos, sino que se van a clonar estos a partir
del primero. Por aproximarlo un poco a la programación, aunque luego veremos un
ejemplo, nuestra aplicación hará un “new” del objeto prototipo y a partir de ahí, el esto
de objetos se obtendrán por clonación.
Para evitar las subclases de un objeto creador como hace el patrón Abstract
Factory.
Para evitar el costo inherente a la creación de un objeto nuevo mediante el
operador new cuando esto demasiado costoso para la aplicación.
Solución y Estructura:
Solución:
La solución consistirá en definir una interfaz que expone el método necesario para
realizar la clonación del objeto. Las clases que pueden ser clonadas implementarán esta
interfaz, mientras que las clases que deseen clonar deberán utilizar el método definido
en la interfaz.
4
La estructura es la siguiente:
Dónde:
Prototype: Interfaz que define la operación de clonado. Será implementada por todos
los objetos que puedan ser clonados. En ocasiones es implementado como una clase
abstracta.
Positivo y negativo:
POSITIVAS:
o Clonar un objeto es mucho más rápido que crearlo.
o Un programa puede añadir y borrar dinámicamente objetos prototipo en
tiempo de ejecución.
o El cliente no debe conocer los detalles de cómo construir los objetos
prototipo.
NEGATIVAS:
o En objetos muy complejos, implementar la interfaz Prototype puede ser
muy complicada.
5
Ejemplo:
Nuestro ejemplo será muy sencillo: prototipos de TVs. Para ello crearemos la clase TV
y dos subclases: LCD y Plasma. ¿Ya debería ir cambiando Plasma por Led no?
6
Y, por otro lado, tenemos gestor de prototipos: TvPrototype.
7
La invocación desde un Cliente sería:
8
Aplicación
Aplicación 01
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.
->
9
10
Clase LCD:
El método clone() lo redefinimos según las propiedades de los tv del tipo LCD ->
11
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. ->
12
Programa Principal:
->
13
Aplicación funcionando:
Consecuencias
14
Conclusión
Debido a que el patrón Prototye hace uso del método clone(), es necesaria una mínima
explicación de su funcionamiento: todas las clases en Java heredan un método de la
clase Object llamado clone. Un método clone de un objeto retorna una copia de ese
objeto. Esto solamente se hace para instancias de clases que dan permiso para ser
clonadas. Una clase da permiso para que su instancia sea clonada si, y solo si, ella
implementa la interface Cloneable.
Por otro lado, es importante destacar que si va a variar el número de prototipos se puede
utilizar un "administrador de prototipos". Otra opción muy utilizada es un Map como se
ve en el ejemplo.
15
Bibliografía
16