9
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.

Delegation

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

Page 1: Delegation

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.”

Page 2: Delegation

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

Page 3: Delegation

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

Page 4: Delegation

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

Page 5: Delegation

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.

Page 6: Delegation

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

Page 7: Delegation

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

Page 8: Delegation

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

Page 9: Delegation

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