Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PDF Patronesdediseno
PDF Patronesdediseno
1. Generalidades
2. Patrones Gof
2.1. Patrones Creacionales
2.1.1.Fábrica Abstracta
2.1.2.Constructor
2.1.3.Método de Factoría
2.1.4.Prototipo
2.1.5.Singleton
2.2. Patrones Estructurales
2.2.1.Adaptador
2.2.2.Puente
2.2.3.Compuesto
2.2.4.Decorador
2.2.5.Fachada
2.2.6.Peso Ligero
2.2.7.Proxy
2.3. Patrones de Comportamiento
2.3.1.Cadena de responsabilidades
2.3.2.Comando
2.3.3.Interprete
2.3.4.Iterador
2.3.5.Memento
2.3.6.Observador
2.3.7.Estado
2.3.8.Estrategia
2.3.9.Método plantilla
2.3.10.Visitante
3. Patrón Modelo Vista Controlador
MAPA CONCEPTUAL
Generar Reportes
2
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
INTRODUCCIÒN
GENERALIDADES
3
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
4
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Cómo crear familias de clases relacionadas
que implementan una interfaz común?
Solución:
Definir una interfaz que contenga métodos para la creación de los objetos
de cada clase.
5
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Cómo construir objetos complejos manteniendo la alta cohesión?
¿Cómo construir objetos que requieren varios pasos en su construcción?
6
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Solución:
• Definimos una interfaz que defina cada uno de los pasos de la
construcción.
• Definimos una clase que dirija la construcción de los objetos.
• Para cada forma distinta de crear el objeto, definimos una clase concreta
que la defina.
• Muy similar a Fábrica Abstracta.
o Fábrica Abstracta >> familia de objetos.
o Constructor >> objetos complejos.
7
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
8
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Cómo creo instancias de elementos sin
saber el tipo concreto del elemento?
Solución:
• Asignamos la responsabilidad de la creación a un método particular.
• En caso de que sean múltiples tipos, es el método el que se encarga de
la decisión de cual elemento crear.
• En caso de creación compleja, el método encierra y se encarga de esta
complejidad.
9
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
10
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
11
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Cómo aumentar el rendimiento en la construcción
de objetos que siempre son iguales?
Solución:
• Creamos una instancia del objeto y luego lo clonamos.
• Para ello, definimos una interfaz que deban implementar todos los
objetos que quieran ser clonados.
• En la mayoría de los lenguajes es posible hacer un Shadow copy de los
objetos.
12
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
13
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Qué puedo hacer para asegurar que de una clase determinada exista sólo
una instancia durante toda la ejecución de la aplicación?
Solución:
• Dentro de la clase eliminamos el acceso a los constructores, de modo
que no sea posible construir elementos de esta clase, sólo a través de la
misma clase.
14
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
15
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
• ¿Cómo puedo hacer que una clase A utilice una clase B, si B no tiene la
interfaz necesitada por A?
• Interfaz en su sentido más amplio.
• Métodos públicos.
• ¿Cómo puedo hacer lo anterior sin cambiar B (porque no tengo acceso,
o porque está muy acoplada)?
Solución:
• Crear una clase que funcione de adaptador entre las dos clases que
quieren comunicarse.
• El adaptador provee la interfaz que necesita la clase A.
• El adaptador traduce las llamadas a su interfaz en llamadas a la interfaz
original (en este caso la clase B).
• Este patrón está pensado para situaciones en las que no tenemos acceso
a la clase B, o dado que la usamos en otras partes de nuestro sistema,
no queremos modificarla.
16
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
17
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
18
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Qué debo hacer para desacoplar una abstracción de su implementación,
de modo que ambas puedan variar independientemente?
Solución
• Creamos una clase abstracta que represente la abstracción y otra clase
abstracta/interfaz que represente la implementación.
• La abstracción contiene un objeto de la implementación, el cual utiliza
para cumplir su propósito
19
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
20
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
Cómo tratar a un grupo de ciertos elementos de la misma forma como se
trata uno de esos elementos?
Solución:
21
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
22
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
23
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Cómo podemos añadir nuevas funcionalidades a una clase de forma
dinámica?
Solución:
24
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
25
SENA FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
26
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Cómo reducir el acoplamiento con un subsistema de clases complejas,
que están sujetas a futuros cambios, pero manteniendo la funcionalidad
del subsistema?
Solución:
• Creamos una interfaz que exponga las funcionalidades del subsistema.
o Un punto de contacto único con el subsistema, disminuyendo el
posible acoplamiento con ´este.
27
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
28
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
29
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Cómo podemos aumentar el rendimiento/uso de memoria de una
aplicación que posee elementos redundantes?
Solución:
30
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
31
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Problema:
¿Qué debemos hacer para controlar el uso de recursos de un objeto
determinado, dada su complejidad o uso de memoria?
Solución:
32
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
33
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Comando (Command):
Intérprete (Interpreter):
Iterador (Iterator):
Mediador (Mediator):
Recuerdo (Memento):
Observador (Observer):
34
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Estado (Server):
Permitir que la ejecución de las acciones de una clase sea dependiente del
estado en que se encuentra, pudiendo variar el estado en tiempo de
ejecución.
Estrategia (Strategy):
Visitante (Visitor):
Definir nuevas operaciones sobre una jerarquía de clases sin modificar las
clases sobre las cuales opera.
35
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Responsabilidades difusas
36
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
Modelo:
Vista:
Controlador:
37
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
38
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
39
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje
Patrones de Diseño
OBJETO DE
APRENDIZAJE Patrones de Diseño
Desarrollador de contenido
Experto temático César Marino Cuellar
40
FAVA - Formación en Ambientes Virtuales de Aprendizaje SENA - Servicio Nacional de Aprendizaje