Академический Документы
Профессиональный Документы
Культура Документы
2008/2009
Tabla de contenidos
Patrones de diseo
Patrones de diseo
Ingeniera Informtica Universidad Carlos III de Madrid
Diseo Basado en Componentes Curso 2008 / 09
Patrones de diseo
Un patrn es un conjunto:
Memento Iterator
evitar la histresis
Builder
aadir responsabilidades a objetos
Composite
combinadas usando compartir compuesto definir la s gramtica aadir operaciones compartir smbolos terminales
definir recorridos
Decorator
cambiar la piel en vez de las tripas compartir estrategias
Flyweight
Un patrn es una solucin probada que se puede aplicar con xito a un determinado tipo de problemas que aparece con frecuencia Se intenta reutilizar diseos que hayan demostrado su eficacia en previas aplicaciones Esqueleto de aplicacin bsica que el diseador ha de adaptar a sus necesidades
Visitor
definir la cadena
Command
Strategy
definir los pasos de un algoritmo
compartir estados
Observer
instancia nica
Abstract Factory
instancia nica
Implementado usando
Factory Method Facade Adaptado de E. Gamma et al., Design Patterns: Elements of reusable ObjectOriented software
Singleton
Patrones de diseo
Patrones de diseo
Patrn Modelo-Vista-Controlador
OBJETIVO Desacoplar los objetos del modelo y los objetos de la vista. El patrn de arquitectura MVC ayuda a reducir la complejidad en el diseo arquitectural e incrementar la flexibilidad y el reuso.
Creacin
Estructura Adapter
Comportamiento Interpreter Template Method Chain of Responsibility Command Iterator Mediator Memento Observer State Strategy Visitor
Patrones de diseo 6
Clase
Presentationabstraction-control Three-tier Pipeline Implicit invocation Blackboard system Peer-to-peer Service-oriented architecture Naked objects Model-View-Controller
mbito
Objeto
(Ejecucin)
Patrones de diseo
Estructura MVC
Modelo
Representacin especifica del dominio donde la aplicacin opera. La lgica del dominio aade significado a los datos (p.e. calcular si hoy es el cumpleaos del usuario, totales, impuestos, etc.) Muchas aplicaciones utilizan un mecanismo persistente de almacenamiento para almacenar datos. MVC no menciona especficamente la capa de acceso a datos porque se entiende que est por debajo o bien se encuentra encapsulada por el modelo
Modelo
Vista
Controlador
Patrones de diseo
Patrones de diseo
Vista
La vista renderiza o muestra de una forma apropiada para la interaccin Tpicamente es un elemento de la interfaz de usuario Pueden existir mltiples vistas para un mismo modelo.
Controlador
Procesa y responde a eventos
Normalmente suelen ser estmulos que proceden de las acciones del usuario Pero pueden ser estmulos que proceden del otros sistemas, o incluso del propio software
Estos estmulos deben ser tratados por el controlador y si procede realizar los cambios necesarios en el modelo.
Patrones de diseo
10
Patrones de diseo
Modelo
Acceso al modelo
Controlador
El usuario interacta con la interfaz de usuario El controlador recibe la notificacin de la accin solicitada por el usuario. El controlador accede al modelo, actualizndolo o modificndolo Los controladores complejos estn a menudo estructurados usando un patrn de comando que encapsula las acciones y simplifica su extensin.
12 Patrones de diseo
11
Patrones de diseo
Proporcionar un interfaz para la creacin de familias de objetos relacionados o dependientes sin necesidad de especificar las clases concretas.
13
14
Patrones de diseo
Si se crean muchos Widgets (como suele ocurrir en aplicaciones de cierta complejidad) ser muy difcil cambiar de una apariencia a otra, dado que hay que modificar muchas instrucciones que estn diseminadas por diferentes partes del programa (problema de mantenimiento). Solucin: patrn de diseo Abstract Factory (fbrica abstracta).
Una fbrica es un objeto que se encarga de crear otros objetos. Una fbrica abstracta y varias fbricas concretas. Un producto abstracto y varios productos concretos.
Patrones de diseo
Button press()
Menu popUp()
ScrollBar sb = guiFactory.createScrollBar();
WindowsScrollBar scrollTo()
MacScrollBar scrollTo()
La variable global guiFactory debe ser inicializada al comienzo del programa con una de las fbricas concretas:
Las operaciones de creacin en las fbricas concretas usan los constructores concretos:
17
Patrones de diseo
18
public ScrollBar createScrollBar() {return new WindowsScrollBar();} public ScrollBar createScrollBar() {return new MacScrollBar();} Patrones de diseo
19
Patrones de diseo
20
Patrones de diseo
21
Patrones de diseo
Estructura
Participantes
Producto (Product)
Define la interfaz de objetos que crea el factory method Implementa la interfaz producto Declara el factory method, el cual decuelve un objeto de tipo Producto Sobrescribe el factory method para devolver una instancia de un producto
Patrones de diseo
Creador (Creator)
23 Patrones de diseo 24
Patrn Facade
OBJETIVO Ofrece una interfaz unificada a un conjunto de interfaces en un subsistema. Define una interfaz a alto nivel que hace al subsistema ms fcil de usar.
Estructura
25
Patrones de diseo
26
Patrones de diseo
27
Entorno de programacin que ofrece a las aplicaciones acceso al subsistema de compilacin El subsistema ofrece clases como Scanner, Parser, ProgramNode, BytecodeStream etc. Quiz aplicaciones especializadas necesiten tener un acceso a esas clases directamente Pero la mayor parte de los cdigos clientes no les interesan entrar en ese detalle, simplemente quieren compilar cierto cdigo. Las interfaces a bajo nivel dificultan el manejo simple del sistema.
Patrones de diseo 28
Participantes
Facade (compilador)
Sabe que clases del subsistema son responsables de una peticin. Delega al cliente peticiones ms complejas a los objetos del subsistema. Implementan la funcionalidad del subsistema. Manejan las peticiones asignadas al objeto Fachada (Facade) No tienen ningn conocimiento del objeto Fachada. Es decir no tiene ninguna referencia a l.
Patrones de diseo
29
Patrones de diseo
30
Patrn Observer
OBJETIVO Definir una dependencia uno a muchos entre objetos tal que cuando un objeto cambia de estado, todos los objetos dependientes (observadores) son notificados automticamente.
Efecto de la POO
Un efecto colateral de partir un sistema en colecciones de clases cooperantes es la necesidad de mantener la consistencia entre los objetos relacionados. Por otro lado no se quiere mantener la consistencia haciendo que las clases estn estrechamente acopladas, porque esto reducira la reusabilidad.
31
Patrones de diseo
32
Patrones de diseo
33
34
Patrones de diseo
Ejemplo Observer
Funcionamiento
Los objetos clave son los sujetos y los observadores. Un sujeto debe tener cualquier nmero de observadores dependientes. Los observadores son independientes entre s. Todos los observadores son notificados siempre que el sujeto experimenta un cambio de estado. En respuesta, cada observador pedir al sujeto que se sincronice con su estado.
35
Patrones de diseo
36
Patrones de diseo
Estructura Observer
Patrn Command
OBJETIVO Encapsular una peticin como un objeto, permitir la parametrizacin de clientes, encolar o guardar en el log peticiones, y dar soporte a operaciones de tipo deshacer
37
Patrones de diseo
38
Patrones de diseo
Estructura
Permite hacer peticiones y convertirlas en objetos. Estos objetos comandos pueden ser almacenados o enviados como otros objetos. La clave en este patrn es la clase abstracta (o interface) Command, la cual declara una interfaz para la ejecucin de operaciones. Esta clase incluye una operacin execute abstracta. Los comandos concretos definen un par receptoraccin, almacenando el receptor e implementando la operacin execute El receptor sabe como actuar ante la recepcin del mensaje
39 Patrones de diseo 40
Consecuencias
Desacopla el objeto que invoca la operacin del que sabe cmo realizarla. Los comandos son objetos manipulables y extensibles como cualquier otro. Permite combinar comandos en un comando compuesto: patrn Composite. Es fcil aadir nuevos comandos sin cambiar las clases existentes Comandos reversibles: aadir unexecute( ), state, history list Comandos registrados: aadir store( ), load( )
Patrones de diseo
10
Estructura.
Bibliografa
E. Gamma et al., Design Patterns: Elements of reusable ObjectOriented software El Lenguaje Unificado de Modelado
Grady Booch, James Rumbaugh, Ivar Jacobson Addison Wesley, 1999
41
Patrones de diseo
42
Patrones de diseo
Introduccin
Ingeniera Informtica Universidad Carlos III de Madrid
Diseo Basado en Componentes Curso 2008 / 09
11