0% encontró este documento útil (0 votos)
66 vistas14 páginas

Patrones de Diseño en Arquitectura de Software

Este documento presenta varios patrones de diseño de software, incluidos Abstract Factory, Composite, Chain of Responsibility y Strategy. Abstract Factory proporciona una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas. Composite permite tratar objetos individuales y composiciones de forma uniforme mediante una estructura de árbol. Chain of Responsibility evita acoplar el remitente de una solicitud a su receptor, permitiendo que varios objetos puedan manejar la solicitud. Strategy define una familia de algoritmos intercambiables encapsulados en

Cargado por

josue torres
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
66 vistas14 páginas

Patrones de Diseño en Arquitectura de Software

Este documento presenta varios patrones de diseño de software, incluidos Abstract Factory, Composite, Chain of Responsibility y Strategy. Abstract Factory proporciona una interfaz para crear familias de objetos relacionados sin especificar sus clases concretas. Composite permite tratar objetos individuales y composiciones de forma uniforme mediante una estructura de árbol. Chain of Responsibility evita acoplar el remitente de una solicitud a su receptor, permitiendo que varios objetos puedan manejar la solicitud. Strategy define una familia de algoritmos intercambiables encapsulados en

Cargado por

josue torres
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

República Bolivariana de Venezuela

Ministerio del Poder Popular para la Defensa


Universidad Nacional Experimental Politécnica de la Fuerza Armada Nacional
Bolivariana
U.N.E.F.A.
Núcleo Miranda
Extensión: Ocumare del Tuy
Carrera: Ing. en Sistemas
Semestre: 7MO
Unidad curricular: Arquitectura del Software

Patrones de diseño
Profesor:
Alexis Martínez

Alumno:
Josué Torres C.I: 28.007.339

Ocumare del Tuy 09/12/2022


Patrones de Diseño

Patrón lineal

 Abstract Factory (Fábrica abstracta):

1. Intención

 Proporcione una interfaz para crear familias de objetos relacionados o

dependientes sin especificar sus clases concretas.

 Una jerarquía que encapsula: muchas "plataformas" posibles y la construcción de

un conjunto de "productos".

 El new operador consideró perjudicial.

2. Problema

Si una aplicación va a ser portátil, debe encapsular las dependencias de la

plataforma. Estas "plataformas" pueden incluir: sistema de ventanas, sistema operativo,

base de datos, etc. Con demasiada frecuencia, esta encapsulación no está diseñada de

antemano y muchas #ifdef declaraciones de casos con opciones para todas las

plataformas compatibles actualmente comienzan a procrear como conejos a lo largo del

código.
3. Discusión

Proporcione un nivel de indirección que abstraiga la creación de familias de objetos

relacionados o dependientes sin especificar directamente sus clases concretas. El

objeto "fábrica" tiene la responsabilidad de proporcionar servicios de creación para toda

la familia de plataformas. Los clientes nunca crean objetos de plataforma directamente,

le piden a la fábrica que lo haga por ellos.

Este mecanismo facilita el intercambio de familias de productos porque la clase

específica del objeto de fábrica aparece solo una vez en la aplicación, donde se

instancia. La aplicación puede reemplazar al por mayor toda la familia de productos

simplemente instanciando una instancia concreta diferente de la fábrica abstracta.

Debido a que el servicio proporcionado por el objeto de fábrica es tan generalizado,

se implementa de manera rutinaria como Singleton.

4. Estructura

Abstract Factory define un método de fábrica por producto. Cada Factory Method

encapsula el new operador y las clases de productos concretas y específicas de la

plataforma. Luego, cada "plataforma" se modela con una clase derivada de Factory.
Patrón estructural

 Composite(compuesto):

5. Intención

 Componga objetos en estructuras de árbol para representar jerarquías de

partes completas. Composite permite a los clientes tratar objetos

individuales y composiciones de objetos de manera uniforme.

 composición recursiva
 "Los directorios contienen entradas, cada una de las cuales podría ser un

directorio".

 1 a muchos "tiene un" en la jerarquía "es un"

6. Problema

La aplicación necesita manipular una colección jerárquica de objetos "primitivos" y

"compuestos". El procesamiento de un objeto primitivo se maneja de una manera y el

procesamiento de un objeto compuesto se maneja de manera diferente. No es deseable

tener que consultar el "tipo" de cada objeto antes de intentar procesarlo.

7. Discusión

Defina una clase base abstracta (Componente) que especifique el comportamiento

que debe ejercerse uniformemente en todos los objetos primitivos y compuestos.

Subclase las clases Primitivo y Compuesto fuera de la clase Componente. Cada objeto

Compuesto se "acopla" a sí mismo solo con el Componente de tipo abstracto, ya que

administra a sus "hijos".

Utilice este patrón siempre que tenga "compuestos que contengan componentes,

cada uno de los cuales podría ser un compuesto".


Los métodos de gestión de niños [p. ej. addChild (), removeChild ()] normalmente

deben definirse en la clase Composite. Desafortunadamente, el deseo de tratar

Primitivos y Compuestos de manera uniforme requiere que estos métodos se trasladen

a la clase de Componente abstracto. Consulte la sección "Opiniones" a continuación

para obtener una discusión sobre los problemas de "seguridad" versus "transparencia".

8. Estructura

Compuestos que contienen Componentes, cada uno de los cuales podría ser un

Compuesto.

 Menús que contienen elementos de menú, cada uno de los cuales podría ser

un menú.
 Administradores de diseño de GUI de filas y columnas que contienen widgets,

cada uno de los cuales podría ser un administrador de diseño de GUI de filas y

columnas.

 Directorios que contienen archivos, cada uno de los cuales podría ser un

directorio.

 Contenedores que contienen Elementos, cada uno de los cuales podría ser

un Contenedor.

Patrón de comportamiento

 Chain responsability (Cadena de responsabilidad):

9. Intención

 Evite vincular al remitente de una solicitud con su receptor dando a más de

un objeto la oportunidad de manejar la solicitud. Encadene los objetos receptores

y pase la solicitud a lo largo de la cadena hasta que un objeto la maneje.

 Solicitudes de lanzamiento y abandono con una sola canalización de

procesamiento que contiene muchos controladores posibles.

 Una lista enlazada orientada a objetos con recorrido recursivo.


10. Problema

Existe un número potencialmente variable de objetos "manejador", "elemento de

procesamiento" o "nodo", y un flujo de solicitudes que deben manejarse. Necesidad de

procesar de manera eficiente las solicitudes sin relaciones y precedencias de

controlador de cableado fijo, o asignaciones de solicitud a controlador.

11. Discusión

Encapsule los elementos de procesamiento dentro de una abstracción de "tubería"; y

hacer que los clientes "lancen y dejen" sus solicitudes en la entrada de la canalización.
El patrón encadena los objetos receptores y luego pasa cualquier mensaje de

solicitud de un objeto a otro hasta que llega a un objeto capaz de manejar el mensaje.

El número y tipo de objetos handler no se conoce a priori, se pueden configurar

dinámicamente. El mecanismo de encadenamiento utiliza una composición recursiva

para permitir que se vincule un número ilimitado de controladores.

Chain of Responsibility simplifica las interconexiones de objetos. En lugar de que los

remitentes y los receptores mantengan referencias a todos los candidatos a receptores,

cada remitente mantiene una única referencia a la cabeza de la cadena y cada receptor

mantiene una única referencia a su sucesor inmediato en la cadena.


Asegúrese de que exista una "red de seguridad" para "atrapar" cualquier solicitud

que no se atienda.

No utilice la Cadena de responsabilidad cuando cada solicitud solo la maneja un

controlador o cuando el objeto del cliente sabe qué objeto de servicio debe manejar la

solicitud.

12. Estructura

Las clases derivadas saben cómo satisfacer las solicitudes del Cliente. Si el objeto

"actual" no está disponible o no es suficiente, entonces delega a la clase base, que

delega al objeto "siguiente", y el círculo de la vida continúa.


Múltiples manejadores podrían contribuir al manejo de cada solicitud. La solicitud se

puede transmitir a lo largo de toda la cadena, con el último enlace teniendo cuidado de

no delegar a un "siguiente nulo".

 Strategy(Estrategia):

13. Intención

 Defina una familia de algoritmos, encapsule cada uno y hágalos

intercambiables. La estrategia permite que el algoritmo varíe

independientemente de los clientes que lo utilicen.

 Capture la abstracción en una interfaz, oculte los detalles de implementación

en clases derivadas.

14. Problema

Una de las estrategias dominantes del diseño orientado a objetos es el "principio

abierto-cerrado".
La figura demuestra cómo se logra esto de forma rutinaria: encapsule los detalles de

la interfaz en una clase base y oculte los detalles de implementación en las clases

derivadas. Luego, los clientes pueden acoplarse a una interfaz y no tener que

experimentar la agitación asociada con el cambio: ningún impacto cuando cambia el

número de clases derivadas, y ningún impacto cuando cambia la implementación de

una clase derivada.

Un valor genérico de la comunidad de software durante años ha sido "maximizar la

cohesión y minimizar el acoplamiento". El enfoque de diseño orientado a objetos que se

muestra en la figura tiene que ver con minimizar el acoplamiento. Dado que el cliente

está acoplado sólo a una abstracción (es decir, una ficción útil), y no a una realización

particular de esa abstracción, podría decirse que el cliente está practicando un

"acoplamiento abstracto". una variante orientada a objetos de la exhortación más

genérica "minimizar el acoplamiento".


Una caracterización más popular de este principio de "acoplamiento abstracto" es

"Programa para una interfaz, no una implementación".

Los clientes deberían preferir el "nivel adicional de direccionamiento indirecto" que

ofrece una interfaz (o una clase base abstracta). La interfaz captura la abstracción (es

decir, la "ficción útil") que el cliente desea ejercitar, y las implementaciones de esa

interfaz quedan efectivamente ocultas.

15. Estructura

La entidad de interfaz podría representar una clase base abstracta o las expectativas

de firma del método por parte del cliente. En el primer caso, la jerarquía de herencia

representa un polimorfismo dinámico. En el último caso, la entidad de interfaz

representa el código de plantilla en el cliente y la jerarquía de herencia representa el

polimorfismo estático
.

También podría gustarte