Tripleta de Patrones “Builder-Adapter-Strategy”
Para este articulo, les traigo una análisis sobre algunos patrones de diseño importantes que a diario en el ambiente de la ingenieria de software son muy valorados, decidí ejemplificar un patrón de diseño creacional, uno estructural y un de comportamiento y asi poder matizar cada uno de los escenarios.
Las herramientas utilizadas:
- Visual 2008 – con aplicaciones Windows Application y Web Application depediendo el caso.
- Modelado con EA 7.1
Veamos en primer lugar esta categorización propuesta de Patrones de diseño:
Creacionales | Estructurales | Comportamiento | |
Clases | Factory Method | Interpreter Template Method | |
Objeto | Abstract Factory Builder Prototype Singleton | Adapter Bridge Composite Decorator Facade Flyweight Proxy | Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor |
Tabla 1
(Patrones de Diseño – Elementos de software orientado a objetos reutilizables- Gamma, Helm, Johnson, Vlissides)
Como podemos observar los marcados en negrita de la tabla 1, serán desarrollados.
Veamos que características importantes tiene cada uno de los patrones:
Builder
Diagrama de Clases Tradicional
Diagrama de Clases Ejemplo
Este Diagrama expone un ejemplo de aplicación del patrón Builder, como aplicación del mismo intenta representar en escenarios de implementación de la idea del patrón conceptual.
Propósito
Separa la construcción de un objeto complejo de su representación, de forma que el mismo proceso de construcción pueda crear diferentes representaciones.
Aplicabilidad
- El algoritmo para crear un objeto complejo debiera ser independiente de las partes de que se compone dicho objeto y de cómo se ensamblan.
- El proceso de construcción debe permitir diferentes representaciones del objeto que está siendo construido.
Consecuencias
- Permite variar la representación interna de un producto.
- Aísla el código de construcción y representación.
- Proporciona un control más fino sobre el proceso de construcción.
(Patrones de Diseño – Elementos de software orientado a objetos reutilizables- Gamma, Helm, Johnson, Vlissides)
Documento Anexo
Video
Adapter
Diseño de clases tradicional
Diseño de clases de ejemplo
Propósito
Convierte la interfaz de una clase en otra interfaz que es la que esperan los clientes. Permite que cooperen clases que de otra forma no podrían por tener interfaces incompatibles.
Aplicabilidad
- 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.
- Un adaptador de objetos puede adaptar la interfaz de su clase padre.
Consecuencias
Adaptador de Clases
- Adapta una clase Adaptable a un Objetivo.
- Permite Adaptador redefina parte del comportamiento de Adaptable.
- Introduce un solo objeto, y no se necesita ningún puntero de indirección adicional para obtener el objeto adaptado.
Adaptador de Objetos
- Permite que un solo Adaptador funcione con muchos adaptables.
- Hace que sea más difícil redefinir el comportamiento de adaptable.
(Patrones de Diseño – Elementos de software orientado a objetos reutilizables- Gamma, Helm, Johnson, Vlissides)
Documento Anexo
Video
Strategy
Diseño de Clases Tradicional
Diseño de Clases de Ejemplo
Propósito
Define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables. Permite que un algoritmo varíe independientemente de los clientes que lo usan.
Aplicabilidad
- Muchas de las clases relacionadas difieren solo en su comportamiento.
- Se necesitan variantes distintas de un algoritmo
- Un algoritmo usa datos que los clientes no deberían conocer
- Una clase define muchos comportamientos, y estos se representan como múltiples sentencias condicionales en sus operaciones.
Consecuencias
- Familias de algoritmos relacionados
- Una alternativa a la herencia
- Las estrategias eliminan las sentencias condicionales
- Elección en las implementaciones
- Los clientes deben conocer las diferentes estrategias
- Costos de comunicación entre las estrategia y el Contexto
- Mayor número de objetos
(Patrones de Diseño – Elementos de software orientado a objetos reutilizables- Gamma, Helm, Johnson, Vlissides)
Documento Anexo
Video
Espero que esto les sea de utilidad, hasta la próxima.
Comentarios
Publicar un comentario