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

http://docs.google.com/fileview?id=0BzAvb4VffxhvMzFhYmI5OTMtZWE0ZC00ZmVmLTk3YzAtYjQ0YWQ5NGVmMjZk&hl=es


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

http://docs.google.com/fileview?id=0BzAvb4VffxhvNWYzMWI3NmQtYzM4Mi00MGFjLWI4ZmUtYTg4ZGFmODcwYWU4&hl=es

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

http://docs.google.com/fileview?id=0BzAvb4VffxhvN2NhOTc2YmEtNGJjYi00YThmLTkzZWEtZmRjZDlhYjYzZDVm&hl=es

Video


 

Espero que esto les sea de utilidad, hasta la próxima.


 

Comentarios

Entradas más populares de este blog

Modelando relaciones en UML, un acercamiento a las Asociaciones

Utilizando Intents implícitos para crear actividades

Secuencias…Modelado indispensable