Patron de diseno: patron creacional, metodo fabrica
Enviado por kikes • 10 de Mayo de 2013 • 1.692 Palabras (7 Páginas) • 317 Visitas
PATRÓN DE DISEÑO: PATRÓN CREACIONAL; MÉTODO FÁBRICA
Introducción:
Llamamos patrones de fabricación a aquellos patrones que involucran algún tipo de factoría o fábrica (factory, en inglés) de objetos. Estos patrones entran en la categoría de patrones de creación la cual comparten con otros patrones tales como el Singleton, Builder y Prototype.
Los objetos de fabricación (fábricas) tienen la responsabilidad de crear instancias de objetos de otras clases. Tienen además la responsabilidad y el conocimiento necesario para encapsular la forma en que se crean determinados tipos de objetos en una aplicación.
Los Patrones permiten establecer un vocabulario común de diseño, cambiando el nivel de abstracción a colaboraciones entre clases y permitiendo comunicar experiencia sobre dichos problemas y soluciones. Son también un gran mecanismo de comunicación para transmitir la experiencia de los ingenieros y diseñadores experimentados a los más nóveles, convirtiéndose en unas de las vías para la gestión del conocimiento.
Llamaremos fábrica, factoría o factory a una clase que implemente uno o más métodos de creación, que son los métodos que se encargan de crear instancias de objetos (estas instancias pueden ser de esta misma clase o de otras). Esta clase tiene entre sus responsabilidades la creación de instancias de objetos, pero puede tener también otras responsabilidades adicionales. Los métodos de creación pueden ser estáticos.
Patrón creacional:
Propósito
Define interfaz para crear un objeto, pero deja que las subclases decidan que clase concreta instanciar.
Aplicabilidad
• No se puede anticipar la clase de objetos a crear
• Una clase quiere que sus subclases especifiquen que objetos se deben crear
• Clases delegan la responsabilidad a una de muchas subclases colaboradoras, y se desea localizar el conocimiento de qué subclase es la encargada
Participantes
• Producto (Product)
Define la interfaz de los objetos creados por el método de fabricación
• Producto Concreto (ConcreteProduct)
Implementa la interfaz de los productos
• Creador (Creator)
Declara el método de fabricación
Opcionalmente, el creador puede definir una implementación por defecto que construye un producto concreto
Puede utilizar el método de fabricación
• Creador concreto (ConcreteCreator)
Redefine el método de fabricación para devolver una instancia de un producto concreto
Consecuencias
• Elimina la necesidad de incluir clases específicas de la aplicación en código más general (potencia reutilización del framework)
• Mayor flexibilidad dado que se proporciona un mecanismo a las subclases para introducir una versión extendida del producto
Desventaja: Puede obligar a extender la clase creadora sólo para crear un producto concreto, si esto es un problema se puede emplear otra solución (por ejemplo, Prototipo)
Tipos de fábricas:
Simple Factory
Clase utilizada para crear nuevas instancias de objetos.
Factory Method
Define una interfaz para crear objetos pero deja que sean las subclases las que deciden qué clases instanciar.
Abstract Factory
Proporciona una interfaz para crear familias de objetos relacionados o que dependen entre sí, sin especificar sus clases concretas.
Relación entre los Patrones de Factoría
Los patrones no existen aislados el uno del otro, sino más bien dentro del contexto de un lenguaje o sistema de patrones. Por consiguiente existen relaciones entre ellos que pueden determinar cuándo, cómo y por qué utilizar uno u otro. Los patrones de fabricación no están exentos de esto.
Diagrama basado en UML que muestra las relaciones entre los distintos patrones.
En la vida real, los patrones no están segregados por líneas absolutas. A menudo, una clase puede utilizar uno o más patrones, haciendo difuso el límite entre ambos. Adicionalmente, se puede comenzar utilizando un patrón sencillo y evolucionar hacia otro más complejo en función de las necesidades de nuestra aplicación
Factory Method
Factory Method define una interfaz para crear objetos, pero deja que sean las subclases quienes decidan qué clases instanciar; permite que una clase delegue en sus subclases la creación de objetos.
Ejemplo "No Software"
Las prensas de moldeado a inyección sirven para explicar este patrón. Los fabricantes de juguetes de plástico procesan plástico en polvo para moldeado, e inyectan el plástico en moldes con las formas deseadas. La clase de un juguete (auto, figura, etc.) es determinada por el molde.
Ejemplos de Código
Existe un número de variantes para este patrón, Para los ejemplos, utilizaremos como clases Producto un modelo de objetos muy sencillo de una tienda de mascotas. En este caso, Mascota hace las veces del participante Producto; y Perro, Gato y Víbora son instancias de Producto Concreto:
Variaciones de Factory Method
Si bien existen diversas variaciones en la implementación de este patrón, los dos principales casos son los que se indican a continuación:
• Creador es abstracto y no provee una implementación para el método de creación que declara.
• Creador es una clase concreta y provee una implementación predeterminada para el método de creación que declara.
En las siguientes secciones presentaremos las distintas opciones de implementación de este patrón y para cada una de ellas ofreceremos un ejemplo en C#.
Creador es una Clase Abstracta o Interfaz
En
...