13
PATRON ADAPTER 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 establecer un puente entre la clase incompatible con el resto de las clases que quieren usar su funcionalidad, adaptando dichas funcionalidades con el sistema

Patron Adapter

Embed Size (px)

DESCRIPTION

habla sobre ele patron adapter y la forma en que funciona para enlazar clases...

Citation preview

Page 1: Patron Adapter

PATRON ADAPTER 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 establecer un puente entre la clase incompatible con el resto de las clases que quieren usar su funcionalidad, adaptando dichas funcionalidades con el sistema

Page 2: Patron Adapter

PARTICIPANTES… Objetivo (Forma)Define la interfaz específica del dominio que usa el Cliente.

Cliente (EditorDeDibujo)Colabora con objetos que se ajustan a la interfaz Objetivo.

Adaptable (VistaTexto)define una interfaz existente que necesita ser adaptada.

Adaptador (FormaTexto)adapta la interfaz de adaptable a la interfaz Objetivo.

Page 3: Patron Adapter

APLICABILIDADDebería usarse el patrón Adapter cuando:

Se quiere usar una clase existente y su interfaz no concuerda con la que necesita.

Se quiere crear una clase reutilizable que coopere con clases no relacionadas o que no han sido previstas

(solamente en el caso de un adaptador de objetos) es necesario usar varias subclases existentes, pero no resulta práctico adaptar su interfaz heredando de cada una de ellas.

Page 4: Patron Adapter

DIAGRAMA O ESTRUCTURA… Un adaptador de clases usa la herencia múltiple para

adaptar una interfaz a otra

Se necesita crear una subclase de adaptable y hacer que el Adaptador se refiera a la subclase en vez de a la clase Adaptable en sí.

Page 5: Patron Adapter

EJEMPLO

Este sistema gira en torno a los motores, utilizamos la herencia , pero no todos ellos se comportan de la misma manera como es el caso del Motor Eléctrico, por tal razón no podemos ponerlo a heredar directamente de la clase Motor, ya que los métodos que esta nos provee no serian útiles para esta clase...

En este punto es donde hacemos uso de una clase Adapter que serviría de puente entre la clase Padre y La Clase que debe ser adaptada

Page 6: Patron Adapter

Ejemplo codigo…

CLASE PADRE

Esta clase hereda de la clase padre, es decir no usa el patrón adapter, lo

cual veremos en la siguiente imagen

Page 7: Patron Adapter

Esta es la clase adaptable, como vemos a pesar de ser

un motor posee características 

muy diferentes a los demás tipos de

motores del sistema, por lo tanto no puede heredar directamente

de la clase Motor

Page 8: Patron Adapter

Aquí se establece el puente por medio del

cual la clase incompatible puede ser utilizada,

hereda de la clase Motor y por medio de la

implementación dada , realiza la comunicación con la clase a adaptar usando para esto una

instancia de la misma...

Page 9: Patron Adapter

Esta clase representa el Cliente del sistema que usa los diferentes tipos de

motores.

Por medio del patrón  Adapter llamamos a los

mismos métodos encender(),  acelerar() o apagar()

Page 10: Patron Adapter

PATRÓN FACADE O FACHADA.

El Patrón Fachada se caracteriza por ser una puerta de entrada hacia otro subsistema. Provee una interfaz unificada y sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces mas complejas.

Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema.

Reduce la complejidad

Page 11: Patron Adapter

APLICABILIDAD: Se usa para proporcionar una interfaz

sencilla para un sistema complejo.

Se quiere desacoplar un subsistema de sus clientes u otros subsistemas, haciéndolo mas independiente y portable.

Se quiera dividir los sistemas en niveles: las fachadas serian el punto de entrada a cada nivel.

Page 12: Patron Adapter

Diagrama: Estructurar un sistema ayuda a reducir la complejidad.

Un típico objetivo de diseño es minimizar la comunicación y dependencias entre subsistemas. Un modo de lograr esto es introduciendo un objeto fachada que proporcione una interfaz única y simplificada para los servicios mas generales del subsistema.

Page 13: Patron Adapter

Ejemplo código…