PATRONES DE CREACIÓN
Estos proporcionan ayuda al momento de crear objetos desde el punto de vista de proporcionar apoyo en la toma de decisiones, incluso cuando esta sea dinámica.
Existen dos formas de clasificar los patrones de diseño basandose en las clases de onjetos que se crean. Una es clasificar las clases que crean los objetos (Factory Method) y la otra esta relacionada con la composición de objetos (definir un objeto que es reponsable de conocer las clases de los objetos producto). En esta caracteristica se apoyan los patrones Abstatrac, factory y Builder.
Ahora definiremos algunos de los patrones de diseño de software e creación mas habituales:
Abstrac Factory
Al encontrarnos frente a un problema en el cual debemos crear diferentes objetos los cuales pertenecen a la misma familia como por ejemplo el sistema de librerías necesarias para crear una interfaz gráfica. Al tener esto podemos decir que lo que intenta solucionar este patron de diseño es realozar la creación de diferentes familias de objetos. El patrón Abstrac Factory se recomienda cuando se visualiza la inclusion de nuevas familias de productos en un futuro, pero resultaría contraproducente añadir nuevos productos o modificar los existentes ya que esto afectaria todas las familias creadas.
Podemos decir que los componentes típicos de este patrón de diseño son:
- Cliente: Es una entidad que se encarga de llamar a la fabrica adecuada que necesita crear uno de los objetos.
- AbstracFactory: Definición de la interfaz que usará las distintas factorías. Esta debe ofrecer como mínimo un método para poder obtener cada objeto que se deba crear.
- Concrete Factories: Representa las diferentes familias de productos. Provee la instancia concreta del objeto que se pretende crear.
- Abstrasc Product: Se encarga de la implementación especifica de cada producto.
Este es un ejemplo del diagrama de clases general de este patrón:
Factory Method
Esta patrón de diseño consiste en utilizar una clase constructora abstracta con unos métodos defiidos y otros abstractos.
Este patrón de diseño puede ser utilizado cuando:
- La creación de un objeto impida su reutilización sin una importante duplicidad de código.
- La creación de un objeto requiere acceso a la información o recursos que no deberian estar incluidos en la clase de composición.
Y sus componentes son:
- Product: Define la interfaz del objeto que Factory Method creará.
- ConcreteProduc: Implementa la interfaz product para crear un producto en concreto.
- Creator: Declara el método factory que devuelve un objeto de tipo Product.
- ConcreteCreator: Sobrescribe el método Factory del creator para devolver una instancia de un producto en concreto.
El diagrama de clase de este método sería:
Prototype
Este patrón de diseño sirve para crear duplicados de un objeto, pare ello el patrón debe especificar el tipo de objeto que se desea clonar crando así un prototipo de esa instancia. Esta clase de objetos debe contener en su interfaz el procedimiento que permita solicitar esa copia.
La principal razón para usar este patrón es crear distintas clases de objetos que necesite el sistema y hacerlo en el momento y entorno adecuado.
El diagrama de clases para este patrón sería:
Los actores que intervienen en este petron son:
- Cliente: Actor que solicita la creación de los nuevos objetos a partir de los prototipos.
- Prototipo concreto: Clase que presenta unas características concretas que serán reproducidas en los nuevos objetos.
- Prototipo: Declara la interfaz a la que accede el cliente y sirve para la clonación de objetos.
Singleton
Este patrón busca restringir la creación de objectos pertenecientes a una clase o valor de un tipo a un único objeto. Su intención es garantizar que una clase sea instanciada solo una vez.
Para implementar este patrón es necesario crear un método que instancie al objeto en caso que no exista una instancia creada. Para garantizar que no vuelva a ser instanciado se limita al constructor con atributos protegidos o privados.
El diagrama de esta clase sería:
El diagrama de esta clase sería:
No hay comentarios:
Publicar un comentario