Patrón Adaptador:
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