Patrón Delegation
Ejemplo: Empleado de Tienda
Se trata de una técnica en la que un objeto permite mostrar cierto método al exterior, pero internamente la implementación o las acciones desencadenadas por el llamado de este método se delega a otro objeto de una clase distinta pero asociado. La delegación es utilizada como un mecanismo para centralizar en torno a un solo objeto los compartimentos (métodos) de varios objetos donde dichos comportamientos mantienen cierto nivel de relación.
Utilidad:
- Cuando se quiere extender y reutilizar la funcionalidad de una clase sin utilizar la herencia.
- Alternativa a la herencia múltiple, en lenguajes que no la soportan.
Ventajas:
- Cuando una clase que hereda de otra quiere ocultar algunos de los métodos heredados
- Compartir código que NO se puede heredar
Con herencia Múltiple y Delegación: simulándola con herencia simple y composición |
Diferencia entre Herencia y Composición:
- Herencia: Debería modelar una relación es-un entre la clase derivada y la clase base.
- Composición: La relación que modela es un tiene-un y, en general, la composición debe preferirse a la herencia.
Tenemos la clase EmpleadoTienda, que es a su vez Persona y Empleado. Podemos representarlo mediante herencia múltiple y también, usando el patrón delegation, con herencia simple :
En gambas3, se haría usando el patrón delegation.
Proyecto:
Clase Trabajador:
->
Clase Persona
->
Clase EmpleadoDeTienda
Esta clase va a ser herencia de Persona y ademas está compuesta por una objeto de la clase Trabajador. En ella hemos definidos los métodos que llamarán a los métodos de la clase trabajador.
Programa Principal:
->
Pantallazo de la aplicación:
Enlace de descarga del ejemplo: enlace
Fuentes:
http://codejavu.blogspot.com.es/2013/06/ejemplo-patron-delegate.html
http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf
http://es.wikipedia.org/wiki/C%2B%2B#Herencia_simple
http://ingeniods.wordpress.com/2013/09/11/delegation-patron-de-diseno/