UNIVERSIDAD PRIVADA DEL VALLE
FACULTAD DE INFORMATICA Y ELECTRONICA CARRERA DE
INGENIERIA DE SISTEMAS INFROMATICOS
INVESTIGACIÓN: PATRONES DE DISEÑO
ESTRUCTURALES
Elaborado por: Fernando Andrés Castedo
Luigi Mateo Encinas Pillon
Sebastián Fernández Conde
Asignatura: Programación III
Gestión académica: 1/2025
SANTA CRUZ – BOLIVIA
Patrones de diseño estructurales
1. Adapter
Definición teórica:
El patrón Adapter permite la colaboración entre objetos de tienen interfaces
incompatibles.
Funcionamiento:
1. Obtiene una interfaz compatible con uno de los objetos existentes.
2. Utilizando esta interfaz, el objeto existente puede invocar con seguridad los
métodos del adaptador.
3. Al recibir la llamada, el adaptador pasa la solicitud al segundo objeto pero en un
formato y orden que ese segundo objeto espera.
UML de aplicación práctica:
2. Bridge/Puente
Definición teórica:
Divide una clase grande o un grupo de clases estrechamente relacionadas, en dos
jerarquías separadas (abstracción e implementación), que se pueden desarrollar una
independientemente de la otra.
Funcionamiento:
1. Define la abstracción o interfaz que representa la vista de alto nivel.
2. Crea la interfaz del implementador para las implementaciones concretas.
3. Se desarrollan cada una de las clases que realizan la lógica especifica.
4. Finalmente, el cliente elige la abstracción concreta y la inyecta en la abstracción.
3. Composite/Compuesto:
Definición teórica:
Permite componer objetos en estructuras de árbol y trabajar con esas estructuras como
si se tratara de trabajar con objetos individuales.
Funcionamiento:
1. Define la interfaz Componente con métodos que tengan sentido para
componentes simples y complejos
2. Crea una clase hoja, que implementa Componente, para representar elementos
simples. Un programa puede tener varias clases hoja diferentes.
3. Crea la clase Compuesto o Contenedor que almacena hojas y delega
operaciones en ellos.
a. El cliente trata tanto a hojas como compuestos de igual forma.
4. Decorator/Decorador:
Definición teórica:
Es un patrón de diseño estructural que te permite añadir funcionalidades a objetos
colocando estos objetos dentro de objetos encapsuladores especiales que contienen
estas funcionalidades.
Funcionamiento:
1. Cree la interfaz Componente con métodos comunes al componente primario y
las capas opcionales y declare métodos en ella.
2. Cree una clase concreta Componente (ComponenteConcreto), que implemente
Componente, y defina en ella el comportamiento base de los métodos.
3. Cree una clase base Decoradora que debe tener un campo para referenciar a un
objeto envuelto.
El campo de
interfaz debe
declararse para
permitir la
vinculación de
los
componentes
concretos, así
como
decoradores. La
clase
decoradora
base debe
delegar todas
las operaciones
al objeto
envuelto.
4. Asegúrese de
que las clases
implementan la
interfaz del
componente.
5. Facade/Fachada:
Definición teórica:
El patrón de diseño Fachada proporciona una interfaz simplificada a una biblioteca, un
framework o cualquier grupo complejo de clases.
Funcionamiento:
1. Crea e implementa la interfaz en una nueva clase Facade/Fachada
2. La fachada deberá redireccionar las llamadas desde el código cliente a los
objetos adecuados del sistema. La fachada debe ser la responsable de inicializar
el subsistema a una nueva versión y gestionar su ciclo de vida.
UML de aplicación práctica:
6. Flyweight/Peso mosca/Cache
Definición teórica:
Es un patrón de diseño estructural que nos permite mantener más objetos dentro de la
cantidad disponible de RAM compartiendo las partes comunes entre varios objetos en
lugar de mantener la información en cada objeto.
Funcionamiento:
1. Divide los campos de una clase que se convertirá en Flyweight en dos partes:
a. el estado intrínseco: los campos que contienen información invariable
duplicada a través de varios objetos
b. el estado extrínseco: los campos que contienen información contextual
única de cada objeto
2. Deja los campos que representaran al estado intrínseco dentro de la clase, pero
asegurándose de que sean inmutables. Deben llevar sus valores iniciales
únicamente dentro del constructor.
3. Repase los métodos que usen los campos del estado extrínseco. Para cada
campo utilizado en el método, introduzca un nuevo parámetro y utilícelo en lugar
del campo.
4. El cliente debe almacenar o calcular valores del estado extrínseco para poder
invocar métodos de objetos Flyweight.
7. Proxy
Definición teórica:
El patrón Proxy permite proporcionar un sustituto o marcador de posición para otro
objeto. Un proxy controla el acceso al objeto original, permitiéndote hacer algo antes o
después de que la solicitud llegue al objeto original.
Funcionamiento:
1. Cree la interfaz de servicio si no hay una existente. Esto sirve para que los
objetos de proxy y de servicio sean intercambiables entre sí.
a. Como segunda opción, se puede crear a proxy como subclase de clase
servicio de forma que herede la interfaz de servicio.
2. La clase proxy debe tener un campo para almacenar las referencias al servicio.
Los proxys crean y gestionan el ciclo de vida completo de sus servicios.
3. Implemente los métodos del proxy según sus propósitos. En la mayoría de los
casos el proxy debería delegar el servicio a un objeto de servicio.