Beruflich Dokumente
Kultur Dokumente
DE DISEO Qu es un patrn de diseo? Segn Dirk Riehle y Heinz Zullighoven: Un patrn es la abstraccin de una forma especficos. concreta que puede repetirse en contextos
Para Christopher Alexander: Cada patrn describe un problema que ocurre una y otra vez en nuestro entorno, para describir despus el ncleo de la solucin a ese problema, de tal manera que esa solucin pueda ser usada ms de un milln de veces sin hacerlo ni siquiera dos veces de la misma forma. Caractersticas: Soluciona un problema: buscan solucionar problema concreto y recurrente.
Es un concepto probado: son soluciones demostradas, no teoras ni especulaciones. La solucin no es obvia: muchas tcnicas de solucin de problemas tratan de hallar soluciones por medio de principios bsicos. Los mejores patrones generan una solucin a un problema de forma indirecta. Describe participantes y relaciones entre ellos: No solo describen mdulos sino estructuras y mecanismos complejos. Y por supuesto, como se relacionan para lograr su objetivo. Elementos de un patrn. Nombre: describe el problema de diseo. El problema: describe cundo aplicar el patrn. La solucin: describe los elementos que componen el diseo, sus relaciones, responsabilidades y colaboracin. PATRONES DE DISEO CLASIFICACIN Patrones de Creacin: Muestran la gua de cmo crear objetos cuando esta labor requiere tomar decisiones. Estas normalmente sern resueltas dinmicamente decidiendo que clases instanciar o sobre qu objetos se delegarn las responsabilidades. Patrones de Particin: durante el anlisis, se examina el problema para identificar actores, casos de uso, requerimientos y sus relaciones. Estos patrones proveen la gua de cmo dividir actores complejos y casos de mltiples clases.
Utilidad: Cuando se quiere extender y reutilizar la funcionalidad de una clase SIN UTILIZAR LA HERENCIA. Ventajas: En vez de herencia mltiple Cuando una clase que hereda de otra quiere ocultar algunos de los mtodos heredados. Compartir cdigo que NO se puede heredar. Class C extends A { B objB; C ( ) { // En la constructora se puede crear obj. de B objB=new B(); } void b1( ) { objB.b1( );} Ejemplo
class A { void f() { System.out.println("A: haciendo f()"); } void g() { System.out.println("A: haciendo g()"); } } class C {
INTERFACE
Utilidad Definir un comportamiento independiente de donde vaya a ser utilizado. Ventajas Desacople entre comportamiento y clase. Realizacin de clases Utilities
Utilidad Sirve para indicar atributos semnticos de una clase. Ventajas: Se puede preguntar si un objeto pertenece a una clase de un determinado tipo o no. Habitualmente se utiliza en clases de utilidades que tienen que determinar algo sobre objetos sin asumir que son instancias de una determinada clase o no. Patrn SINGLETON
Utilidad Asegurar que una clase tiene una sola instancia y proporcionar un punto de acceso global a ella. Ventajas Es necesario cuando hay clases que tienen que gestionar de manera centralizada un recurso. Una variable global no garantiza que slo se instancie una vez. Ejemplo:
Singleton.java public class Singleton{ private static Singleton singleton=null; private Singleton(){}
Utilidad Separar la clase que crea los objetos, de la jerarqua de objetos a instanciar. Ventajas Centralizacin de la creacin de objetos Facilita la escalabilidad del sistema 5
public interface Product{ public void operacion(); } public class ConcreteProduct implements Product{ public void operacion(){ System.out.println("Una operacin de este producto"); } } public static void main(String args[]){ Creator aCreator; aCreator = new ConcreteCreator(); Product producto = aCreator.factoryMethod(); producto.operacion(); }
Patrn ADAPTER
Intencin Convertir la interfaz de una clase en otra interfaz esperada por los clientes.
Intencin Componer objetos en jerarquas todo-parte y permitir a los clientes tratar objetos simples y compuestos de manera uniforme Ventajas Permite tratamiento uniforme de objetos simples y complejos as como composiciones recursivas Simplifica el cdigo de los clientes, que slo usan una interfaz Facilita aadir nuevos componentes sin afectar a los clientes
Inconvenientes Es difcil restringir los tipos de los hijos Las operaciones de gestin de hijos en los objetos simples pueden presentar problemas: seguridad frente a flexibilidad
Intencin: El patrn FACADE simplifica el acceso a un conjunto de clases proporcionando una nica clase que todos utilizan para comunicarse con dicho conjunto de clases. Ventajas Los clientes no necesitan conocer las clases que hay tras la clase FACADE Se pueden cambiar las clases ocultadas sin necesidad de cambiar los clientes. Slo hay que realizar los cambios necesarios en FACADE. Patrn OBSERVER
Intencin Definir una dependencia 1:n de forma que cuando el objeto 1 cambie su estado, los n objetos sean notificados y se actualicen automticamente Motivacin En un toolkit de GUI, separar los objetos de presentacin (vistas) de los objetos de datos, de forma que se puedan tener varias vistas sincronizadas de los mismos datos (editor-subscriptor)
Intencin: Encapsular algoritmos relacionados en clases y hacerlos intercambiables. Se permite que la seleccin del algoritmo se haga segn el objeto que se trate.+ Ventajas Se permite cambiar el algoritmo dinmicamente Se eliminan sentencias condicionales para seleccionar el algoritmo deseado Patrn ITERATOR. Intencin: Proporcionar una forma de acceder a los elementos de una coleccin de objetos de manera secuencial sin revelar su representacin interna. Define una interfaz que declara mtodos para acceder secuencialmente a la coleccin. Ventajas: La clase que accede a la coleccin solamente a travs de dicho interfaz permanece independiente de la clase que implementa la interfaz.
MVC consta de tres clases de objetos: Model (aplicacin), View (presentacin en pantalla) y Controller (forma en que la interfaz de usuario reacciona a las entradas del usuario). El MVC separa vista y modelo estableciendo un protocolo de notificacin entre ellos. Cuando el Model cambia notifica a los View que dependen de l. Como resultado, cada View puede actualizarse a s mismo. Este Patrn de Diseo permite tener mltiples View de un Model, para proveer distintas presentaciones.
10
Objetos Fronterizos Objetos de Control Objetos de Entidad Es til pensar en los objetos de contorno y los objetos de entidad como sustantivos que son, y los controladores como ser los verbos. Mantenga las siguientes reglas en mente al elaborar sus diagramas de robustez: Los nombres pueden hablar con los verbos (y viceversa). Los sustantivos no pueden hablar con otros nombres. Los verbos pueden hablar con otros verbos.
11
12