Etiquetas

, , ,

Los patrones de diseño son soluciones que se puede aplicar a problemas recurrentes en el diseño de software, los mismos cubren aspectos como la creación e interacción de objetos así como la comunicación entre ellos, ademas estos nos hacen mas fácil el reutilizar componentes de software basándose en técnicas ya probadas una y otra vez en distintas aplicaciones pudiendo realizar diseños de una manera mas rápida y simplificada.

Los patrones de diseño se dividen en tres grupos: creacionales, estructurales, y de comportamiento, en este primer post empezare hablando del patrón creacional Abstract Factory.

Definicion de Abstract Factory: este patrón nos provee una interfaz  para crear familias de objetos relacionados o dependientes entre ellos sin especificar una clase en concreto.

Diagrama UML

Participantes:

AbstractFactory: declara una interfaz para operaciones que crean un producto abstracto

ConcreteFactory : implementa la operación para crear un producto en concreto

AbstractProduct  : declara una interfaz para un tipo de producot en concreto

Product: define un producto que será creado por su ConcreteFactory correspondiente e implementa la interfaz AbstractProduct

Client:  usa la interfaz declarada por el AbstractFactory   y AbstractProduct

Entre los problemas mas comunes resueltos por el patrón Abstract Factory se encuentra:

– La creación de un objeto creando su tipo de manera dinámica de forma que no nos veamos atados a una implementación sino a una interfaz haciendo mas fácil los cambios futuros.

–  Nos permite jugar con la manera de satisfacer las peticiones hacia una operación determinada, de esta manera es mas sencillo cambiar la forma en que se atienden las peticiones desde una operación en concreto.

– Nos permite poder manejarnos entre distintas plataformas de hardware  y software al poder ser capaces de realizar diferentes manejos de las peticiones basándonos en las plataformas.

También es muy usado en casos donde se requiere crear una librería de clases  de productos ya que solo revelamos sus interfaces mas no su implementación .

Aquí pueden descargar las clases en C# creadas con el Visual Studio 2008

Aquí pueden descargar el diagrama de clases realizado en el PowerDesigner