Upload
mauro-gomez-mejia
View
3.103
Download
0
Embed Size (px)
DESCRIPTION
Descripción del patrón fundamental Delegation, que hace parte de los patrones de diseño. más en: http://ingeniods.wordpress.com/2013/09/11/delegation-patron-de-diseno/
Citation preview
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Patrones fundamentales: Delegation
Delegar: “Dicho de una persona: Dar a otra la
jurisdicción que tiene por su dignidad u oficio, para
que haga sus veces o para conferirle su
representación.”
- RAE 2013
Este patrón se puede implementar
de dos maneras Una de ellas es a través del uso de
la composición
La otra manera es por medio de uso de
interfaces
"Delegation is like inheritance
done manually through object
composition."
[Lecture slides of course 601: "Object-Oriented Software Development" at the University
of San Francisco ]
"Delegación es como hacer
herencia manualmente a través de
la composición.”
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Patrones fundamentales: Delegation
Delegar: “Dicho de una persona: Dar a otra la
jurisdicción que tiene por su dignidad u oficio, para
que haga sus veces o para conferirle su
representación.”
- RAE 2013
Uso de composición
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Describimos clases básicas Barco, Automovil, Helicoptero
Las clases entre sí tienen métodos muy similares
pero que implican comportamientos distintos
Patrones fundamentales: Delegation
No se declararon variables
en ninguna de las clases,
para que el ejemplo fuese
más claro
Aparte de los métodos
iniciarMotor y andar, la
clase Helicoptero tiene
dos métodos
adicionales descender
y ascender
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Aparte de las clases básicas describimos la clase Sumergible
Patrones fundamentales: Delegation
Tenemos una clase especial de embarcación que son los sumergibles, por herencia tienen los métodos de Barco
Además tiene los métodos
descender y ascender
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Implementamos el patrón de delegación en una
Clase llamada SuperAutomovil
Patrones fundamentales: Delegation
En el supuesto, nuestra clase SuperAutomovil debería extender de Sumergible, Automovil y Helicoptero, pero la herencia múltiple no se permite en Java
nuestro SuperAutomovil extendiendo
de Automovil puede andar por
carretera, y con la instancia de
Sumergible y Helicoptero puede
sumergirse y volar respectivamente.
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Patrones fundamentales: Delegation
Implementamos el patrón Delegation
A pesar que SuperAutomovil expresa ciertas
funcionalidades en su interfaz
Lo único que hace SuperAutomovil es
llamar un método de una de sus
variables
Así SuperAutomovil
delega la ejecución de
sus métodos a otros
Objetos
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Patrones fundamentales: Delegation
Delegar: “Dicho de una persona: Dar a otra la
jurisdicción que tiene por su dignidad u oficio, para
que haga sus veces o para conferirle su
representación.”
- RAE 2013
Uso de interfaces
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
Describimos una interfaz
Motor la cual describe un
método andar()
Implementamos la interfaz
Motor en dos clases
MotorElectrico y MotorVapor
Patrones fundamentales: Delegation
Esta forma de implementar el patrón Delegation es un poco más compleja aunque más funcional
La interfaz Motor describe la funcionalidad básica
de un motor,
pero no tiene
ninguna
manera de
hacerlo
Ingenio DS Programando Soluciones
http://ingeniods.wordpress.com
En este caso el automovil no sabe que
operaciones se realizarán al momento de
andar
Patrones fundamentales: Delegation
La implementación del patrón la realizamos en la clase Automovil
La funcionalidad de andar es
delegada a la instancia de motor
la cual tenga “instalada” el
automovil en el momento que se
invoque ese método
En la línea seis el método se
delegará a la instancia que
tenga por defecto; en la línea
ocho la implementación se
delegará a un MotorElectrico