![Page 1: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/1.jpg)
Arquitectura de SoftwareIngeniería de SistemasITMUnidad 2. Los patrones de diseño en el desarrollo de SoftwareUnidad 2.1 Patrones orientados a la creación
![Page 2: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/2.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
El inicio de los patrones de diseño se dio en 1979, cuando el arquitecto Christopher Alexander publicó el libro “The Timeless Way of Building”, que se constituyó en un gran
aporte para la arquitectura.
Antecedentes e historia
![Page 3: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/3.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
En este libro, el autor, proponía el aprendizaje y uso de una serie de patrones para la construcción de edificios de una mayor calidad.
Antecedentes e historia
![Page 4: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/4.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
El autor asegura que “Cada patrón describe un problema que ocurre infinidad de veces en nuestro entorno, así como la solución al mismo, de tal modo que podemos utilizarla un millón de veces más
sin tener que pensarla otra vez”.
Antecedentes e historia
![Page 5: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/5.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Tras el éxito de los patrones en la arquitectura, en 1987, Ward Cunningham y Kent Beck se basaron en varias ideas de Alexander para desarrollar cinco patrones de intracción hombre-computador (HCI) y publicaron un
artículo “Using Pattern Languages for OO Programs”.
Antecedentes e historia
![Page 6: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/6.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Sin embargo, no fue hasta principios de los 90’s cuando los patrones de diseño tuvieron un gran éxito en el mundo de la informática tras la publicación del libro “Design Patterns” escrito por el grupo denominado GoF
(Gang of Four), que en español significa “La pandilla de los cuatro”.
Antecedentes e historia
![Page 7: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/7.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
En esta publicación el grupo GoF recogía 23 patrones de diseño comunes para el desarrollo de Software.
Antecedentes e historia
![Page 8: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/8.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Los 23 patrones, mencionados anteriormente, están organizados por dos criterios: Propósito (de creación, estructurales y de
comportamiento). Ámbito (clase y objeto).
Catalogo de patrones de diseño
![Page 9: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/9.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Aspectos de diseño que los patrones de diseño permiten modificar
Propósito Patrones de diseño
Aspectos que pueden variar
De creación
Abstract Factory La familia de los objetos producidos
Builder Cómo se crea un objeto compuesto
Factory Method La subclase del objeto que es instanciado
Prototype La clase del objeto que es instanciado
Singleton La única instancia de una clase
![Page 10: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/10.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Aspectos de diseño que los patrones de diseño permiten modificar
Propósito Patrones de diseño
Aspectos que pueden variar
Estructurales
Adapter La interfaz de un objeto
Bridge La implementación de un objeto
Composite La estructura y composición de un objeto
Decorator Las responsabilidades de un objeto sin usar la herencia
Facade La interfaz de un subsistema
Flyweight El coste de almacenamiento de los objetos
Proxy Cómo se accede a un objeto; su ubicación
![Page 11: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/11.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Aspectos de diseño que los patrones de diseño permiten modificar
Propósito Patrones de diseño
Aspectos que pueden variar
De comportamie
nto
Chain of Responsibility
El objeto que puede satisfacer una petición
Command Cuándo y cómo se satisface una petición
Interpreter La gramática e interpretación de un lenguaje
Iterator Cómo se recorren los elementos de un agregado
Mediator Qué objetos interactúan entre sí, y cómo
Memento Qué información privada se almacena fuera de un objeto, y cuándo
Observer El número de objetos que dependen de otro; cómo se mantiene actualizado el objeto dependiente
![Page 12: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/12.jpg)
Arquitectura de Software
Los patrones de Diseño en el Desarrollo de Software
Aspectos de diseño que los patrones de diseño permiten modificar
Propósito Patrones de diseño
Aspectos que pueden variar
De comportamie
nto
State El estado de un objeto
Strategy Un algoritmo
Template Method Los pasos de un algoritmo
Visitor Las operaciones que pueden aplicarse a objetos sin cambiar sus clases
![Page 13: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/13.jpg)
Patrones orientados a la creación
Los patrones de creación están asociados al proceso de creación de los objetos, entre objetos se delegan los procesos de creación.
Arquitectura de Software
![Page 14: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/14.jpg)
Patrones orientados a la creación
Nombre: Fabricación AbstractaFunción: Proporciona una interfaz para crear familias
de objetos relacionados o dependientes sin especificar las clases concretas de las que son instancia.
Si deseamos que nuestro software funcione sobre distintos recursos debemos abstraer las librerías utilizadas proporcionando una interfaz común.
Arquitectura de Software
Abstract Factory
![Page 15: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/15.jpg)
Patrones orientados a la creación
Consideremos un juego de herramientas para construir interfaces de usuario que soporte múltiples estándares look-and-feel.
◦ Diferentes look-and-feel definen diferentes aspectos (colores, figuras, tipos de letra, etc.) y comportamientos (botones, menús, barras de scroll, ventanas, etc.)
◦ Por ejemplo: Motif, Presentation Manager, Open Window, etc.
Arquitectura de Software
Abstract Factory: Motivación
![Page 16: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/16.jpg)
Patrones orientados a la creación
Una aplicación que use estas características no debería codificar explícitamente la creación de objetos específicos del look-and-feel concreto, pues ello complicaría la modificación posterior del mismo.
Tampoco es razonable contemplar las distintas posibilidades de look-and-feel mediante sentencias condicionales que se repiten cada vez que se crea un panel o ventana; sería difícil extender la aplicación a nuevos look-and-feel.
Arquitectura de Software
Abstract Factory: Motivación
![Page 17: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/17.jpg)
Patrones orientados a la creación
Arquitectura de Software
Abstract Factory: Una solución “ingenua”
![Page 18: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/18.jpg)
Patrones orientados a la creación
Arquitectura de Software
Abstract Factory: Una solución “menos ingenua”
![Page 19: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/19.jpg)
Patrones orientados a la creación
Arquitectura de Software
Abstract Factory: Solución
![Page 20: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/20.jpg)
Patrones orientados a la creación
Arquitectura de Software
Abstract Factory: Aplicación
![Page 21: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/21.jpg)
Patrones orientados a la creación
Arquitectura de Software
Abstract Factory: Una solución “menos ingenua”
![Page 22: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/22.jpg)
Patrones orientados a la creación
Arquitectura de Software
El patrón Fabrica Abstracta - Abstract Factory -
![Page 23: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/23.jpg)
Patrones orientados a la creación
Arquitectura de Software
Abstract Factory: Algunas consideraciones
![Page 24: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/24.jpg)
Patrones orientados a la creación
Es un patrón de creación de objetos
Intención: Asegura que una clase tiene una única instancia y proporciona un punto de acceso global a dicha instancia.Motivación: Hay veces que es importante asegurar que
una clase tenga una sola instancia, por ejemplo:
Arquitectura de Software
Singleton: Singular
• Un gestor de ventanas • Una única cola de impresión
• Un único sistema de ficheros
• Un único fichero de log, o un único repositorio
![Page 25: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/25.jpg)
Patrones orientados a la creación
Motivación:
¿Cómo asegurarlo? Una variable global hace el objeto accesible, pero se puede instanciar varias veces.
Responsabilidad de la clase misma: actuar sobre el mensaje de creación de instancias.
Arquitectura de Software
Singleton: Singular
![Page 26: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/26.jpg)
Patrones orientados a la creación
Solución:
Para asegurar que se crea una sola instancia El constructor de la clase no debe ser público.
El almacenamiento de la instancia Se hará en una variable de clase (estática).
El acceso a dicha variable Se hará a través de un método de clase (estático), que
devolverá una referencia a la instancia. La creación de la instancia
Se hará la primera vez que se invoque este método.
Arquitectura de Software
Singleton: Singular
![Page 27: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/27.jpg)
Patrones orientados a la creación
El Patrón Singular:
Arquitectura de Software
Singleton: Singular
![Page 28: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/28.jpg)
Patrones orientados a la creación
Singleton: Implementa la instancia única.
Cliente: Define una operación “instancia” para que el cliente pueda acceder por instancia única.
Arquitectura de Software
Singleton: Singular
![Page 29: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/29.jpg)
Patrones orientados a la creación
Aplicación:
Se recomienda el uso del patrón Singleton cuando: El sistema exige exactamente una instancia de
una clase, la cual debe ser accesible para los clientes desde un punto de acceso bien definido.
La única instancia debe ser extendida a subclases y los clientes deben ser capaces de usarla sin modificar su código.
Arquitectura de Software
Singleton: Singular
![Page 30: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/30.jpg)
Patrones orientados a la creación
Consecuencias:
Acceso controlado a la única instancia.Espacio de nombre reducido. Mejora sobre el
uso de variables globales.Permite el refinamiento de operaciones y la
representación. Se puede subclasificar de la clase Singleton y configurar la aplicación con una instancia de esta clase.
Arquitectura de Software
Singleton: Singular
![Page 31: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/31.jpg)
Patrones orientados a la creación
Consecuencias:
Fácil modificación para permitir un número variable de instancias.
Más flexible que las operaciones de clase.
Arquitectura de Software
Singleton: Singular
![Page 32: Patrones Diseño en Dllo SW Arquitectura SW 2 1](https://reader036.vdocuments.mx/reader036/viewer/2022081502/5695d3a11a28ab9b029ea39b/html5/thumbnails/32.jpg)
Patrones orientados a la creación
Colaboraciones:
Un patrón Singleton es frecuentemente relacionado y empleado en la implementación del patrón Abstract Factory –Fábrica Abstracta-, sobre todo cuando se trata de una fábrica concreta.
Arquitectura de Software
Singleton: Singular