Páginas

viernes, 6 de diciembre de 2013

Patrón Adaptador: Ejemplo tipos de motor

 Patrón Adaptador: 

Ejemplo tipos de motor

Este patrón permite la cooperación entre clases para extender sus funcionalidades a clases de diferentes tipos, que no pueden usarlas por mecanismos comunes como la herencia. 
Permite trabajar juntas a dos clases con interfaces incompatibles:
 Convierte la interfaz de una clase en otra interfaz que el cliente espera. Esto permite a las clases trabajar juntas, lo que de otra manera no podrían hacerlo debido a sus interfaces incompatibles

Este patrón se debe utilizar cuando:
  • Se quiere utilizar una clase que llame a un método a través de una interface, pero se busca utilizarlo con una clase que no implementa ese interface.
  • Se busca determinar dinámicamente que métodos de otros objetos llama un objeto.
  • No se quiere que el objeto llamado tenga conocimientos de la otra clase de objetos.
Diagrama UML patrón Adapter (Adaptador)

Target: define la interfaz específica del dominio que Cliente usa.
Client: colabora con la conformación de objetos para la interfaz Target.
Adaptee: define una interfaz existente que necesita adaptarse
Adapter: adapta la interfaz de Adaptee a la interfaz Target
El Cliente llama a las operaciones sobre una instancia Adapter. De hecho, el adaptador llama a las operaciones de Adaptee que llevan a cabo el pedido.



Ejemplo: Diversos tipos de motores
Queremos compartir funcionalidades (encender, acelerar y apagar), mediante la herencia creando una clase Motor,  entre estos tipos de motores: MotorComun, MotorEcologico y MotorElectrico.
Pero el MotorElectrico, se comporta de una manera muy diferente que los otros.
Para poderlo usar de la misma forma que los demás (con los mismos métodos), vamos a usar una clase adaptadora, que sirva de puente entre la clase padre "Motor" y la clase MotorElectrico, y que se encargue de traducir los métodos de la clase MotorElectrico a los métodos de clase "Motor" . Así el cliente podrá usar  los motores sin difirenciarlos.

Esquema del ejemplo:
http://codejavu.blogspot.com.es/2013/08/ejemplo-patron-adapter.html




Esquema del proyecto:

Clase Motor
->

Clase MotorComun
->

Clase MotorEconomico
->

Clase MotorElectrico
->

Clase MotorElectricoAdapter
Con esta clase, conseguimos adaptar el uso de la clase MotorElectrico con los métodos de la clase Motor
->

Clase Aplicacion:
->

Programa principal:
->

Resultado de la aplicación:

Enlace de descarga ejemplo: https://app.box.com/s/qflrvc7xtmalktjn4dge

Fuentes:
http://migranitodejava.blogspot.com.es/2011/06/adapter.html

http://codejavu.blogspot.com.es/2013/08/ejemplo-patron-adapter.html

http://pinbit.blogspot.com.es/2008/09/patrones-estructurales-i-patrn-adapter.html