2. Patrones de Diseño
• Introducción
– La construcción de software – tarea
complicada
– Depende de la experiencia de las personas
- desarrolladores
– El 80% de los aportes viene del 20% del
personal
– El 80% del esfuerzo está en el 20% del
código desarrollado
4. Patrones de Diseño
• Mecanismos de reutilización
– Componentes
– Frameworks
– Objetos distribuidos
– PATRONES DE DISEÑO
5. Patrones de Diseño
“Cada patrón describe un problema que
ocurre una y otra vez en nuestro entorno,
para describir después el núcleo de la
solución a ese problema, de tal manera
que esa solución pueda ser usada más de
un millón de veces sin hacerlo siquiera dos
veces de la misma forma” - Christopher
Alexander
6. Patrones de Diseño
• Objetivo: crear un lenguaje común a
una comunidad de desarrolladores para
comunicar experiencia sobre los
problemas y sus soluciones
7. Patrones de Diseño
• Características
– Solucionar un problema
– Ser un concepto probado
– La solución no es obvia
– Describe participantes y sus relaciones
8. Patrones de Diseño
• Elementos
1. El nombre del patrón
2. El problema
3. La solución
4. Las consecuencias - resultados
9. Patrones de Diseño
• Clasificación
Propósito
Ámbito
Patrones de Patrones Patrones de
Creación estructurales Comportamiento
Clase • Factory Method • Adapter (de • Interpreter
clases) • Template Method
Objeto • Abstract Factory • Adapter (de • Chain of
• Builder objetos) Responsibility
• Prototype • Bridge • Command
• Singleton • Composite • Iterator
• Decorator • Mediator
• Facade • Memento
• Flyweight • Observer
• Proxy • State
• Strategy
• Visitor
10. Patrones de Diseño
PATRONES DE CREACIÓN
Su propósito principal es abstraer el proceso de creación de instancias.
Ayudan a hacer un sistema independiente de cómo se crean, se componen y
se representan sus objetos - Un patrón de clases usa la herencia para cambiar
la clase de la instancia a crear, mientras que un patrón de objetos delega la
creación de la instancia en otro objeto. Éstos a su vez se clasifican en:
Fabrica Abstracta (Abstract Factory)
Proporciona una interfaz para crear familias de objetos o que
dependen entre sí, sin especificar sus clases concretas.
Constructor (Builder)
Separa la construcción de un objeto de su representación.
Método de Fábrica (Factory Method)
Define una interfaz para crear un objeto.
Prototipo (Prototype)
Especifica los tipos de objetos a crear por medio de una instancia
prototípica y crea nuevos objetos copiando dicho prototipo.
Instancia única (Singleton)
Garantiza que una clase solo tenga una instancia
11. Patrones de Diseño
PATRONES ESTRUCTURALES
Se ocupan de cómo se combinan las clases y los objetos para formar estructuras
más grandes - Los patrones estructurales de clases hacen uso de la herencia para
componer interfaces o implementaciones. En éste tipo de patrones se encuentran:
Adaptador (Adapter)
Convierte la interfaz de una clase en otra interfaz que es la que esperan
los clientes.
Puente (Bridge)
Desacopla una abstracción de su implementación
Compuesto (Composite)
Compone objetos en estructuras de árbol para representar jerarquías de
parte-todo.
Decorador (Decorator)
Asigna responsabilidades adicionales a un objeto dinámicamente
Fachada (Facade)
Proporciona una interfaz unificada para un conjunto de interfaces de un
subsistema.
Peso ligero (Flyweight)
Una instancia de grano fino usada para compartir eficientemente
Apoderado (Proxy)
Un objeto representando otro objeto
12. Patrones de Diseño
PATRONES DE COMPORTAMIENTO
Tienen que ver con algoritmos y con la asignación de responsabilidades a objetos.
Describen no solo patrones de clases y objetos, sino también patrones de
comunicación entre ellos.
Cadena de responsabilidad (Chain of responsibility)
Encadena los objetos receptores y pasa la petición a través de la cadena
hasta que es procesada por algún objeto.
Orden (Command)
Encapsula una petición orden como un objeto.
Interprete (Interpreter)
Define una forma para incluir elementos de lenguaje en un programa
Iterador (Iterator)
Proporciona un modo secuencial para acceder a los elementos de una
colección
Mediador (Mediator)
Define comunicación simplificada entre clases
Recuerdo (Memento)
Captura y restaura el estado interno de un objeto.
13. Patrones de Diseño
PATRONES DE COMPORTAMIENTO
Observador (Observer)
Define una dependencia de uno a muchos entre objetos
Estado (State)
Permite que un objeto modifique su comportamiento cada vez que
cambie su estado interno.
Estrategia (Strategy)
Define una familia de algoritmos, encapsula cada uno de ellos y los hace
intercambiables.
Método Plantilla (Template method)
Define en una operación el esqueleto de un algoritmo, delegando en las
subclases algunos de sus pasos.
Visitante (Visitor)
Representa una operación sobre los elementos de una estructura de
objetos.
14. Patrones de Diseño
• ¿Cómo seleccionar un patrón de
diseño?
• Tipo de problema a resolver
• Que tipos de problemas solucionan un patrón determinado
• Observar las interrelaciones de los patrones
• Visión sistémica (todo)
• Piense que debería ser variable en su diseño.
15. Patrones de Diseño
• ¿Cómo usar un patrón de diseño?
• Familiarizarse con el Patrón: estructura, participantes y
colaboraciones.
• Examine algunos ejemplos de su codificación
• Elija nombres significativos en el contexto de la aplicación
• Defina las clases
• Defina nombres especificos de la aplicación para las
operaciones del patrón
• Implemente las operaciones para llevar a cabo las
responsabilidades y colaboraciones del patrón.
16. Patrones de Diseño
• Patrones y Frameworks
– L o s p a t r o n e s d e d i s e ñ o s o n m á s
abstractos que los frameworks
– Los patrones de diseño son elementos
arquitectónicos más pequeños que los
frameworks
– Los patrones están menos especializados
que los framework
17. Bibliografía
• Gamma E., Helm R., Johnson R., Vlissides J., Patrones de
diseño: Elementos de software orientado a objetos reutilizable,
Pearson Education S.A., Madrid 2003.
• C a l d e r o n J . , S i s t e m a s I V , h t t p : / / w w w. s l i d e s h a r e . n e t /
videoconferencias/sistemas-iv, UTPL 2007