Sie sind auf Seite 1von 12

[Escribir el ttulo del documento]

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.

[Escribir el ttulo del documento]


Patrones de Comportamiento: Son utilizados para organizar, manejar y combinar el comportamiento que tendrn los objetos en el contexto de nuestra solucin. Patrones Estructurales: Describen las formas comunes en que diferentes tipos de objetos pueden ser organizados para trabajar unos con otros. Patrones de concurrencia: permiten coordinar operaciones concurrentes y estn dirigidos a 2 tipos principales de problemas: Recursos compartidos y secuencia de operaciones. DELEGATION

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 {

[Escribir el ttulo del documento]


// objeto asociado para delegacion A a = new A(); void f() { a.f(); } void g() { a.g(); } // atributos normales X x = new X(); void y() { /* haz algo */ } } public class Main { public static void main(String[] args) { C c = new C(); c.f(); c.g(); } }

INTERFACE

Utilidad Definir un comportamiento independiente de donde vaya a ser utilizado. Ventajas Desacople entre comportamiento y clase. Realizacin de clases Utilities

[Escribir el ttulo del documento]


MARKER INTERFACE

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(){}

[Escribir el ttulo del documento]


public static Singleton getSingleton(){ if(singleton==null){ singleton=new Singleton(); } return singleton; } //aqui muestra el nombre 'Singleton' public void ver(){ System.out.println("Estoy desde la clase: "+this.getClass().getName()); } } Principal.java public class Principal{ public static void main(String[] args) { Singleton singleton=Singleton.getSingleton(); singleton.ver(); } }

Patrn FACTORY METHOD

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

[Escribir el ttulo del documento]


El usuario se abstrae de la instancia a crear
/ Definimos la clase abstracta constructora public abstract class Creator{ // Operacin que realiza public Product anOperation() { return factoryMethod(); } // Definimos mtodo abstracto public abstract Product factoryMethod(); } public class ConcreteCreator extends Creator{ protected Product factoryMethod() { return new ConcreteProduct(); } }

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.

[Escribir el ttulo del documento]


Permite que clases con interfaces incompatibles se comuniquen. Ventajas Se quiere utilizar una clase ya existente y su interfaz no se corresponde con la interfaz que se necesita Se quiere envolver cdigo no orientado a objeto con forma de clase. Patrn COMPOSITE

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

[Escribir el ttulo del documento]


Patrn FACADE

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)

[Escribir el ttulo del documento]


Patrn STRATEGY

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.

[Escribir el ttulo del documento]


MVC

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

[Escribir el ttulo del documento]


Diagrama de Robustez. El diagrama de robustez, es algo que no est completamente comprendido, no est descrito en los libros de UML con la extensin que uno quisiera y en muchos casos no existe. En el RUP, se utiliza el MODELO DE OBJETOS, pero en la metodologa ICONIX lo conocemos como DIAGRAMA DE ROBUSTEZ y es algo muy esencial. Un diagrama de robustez es un hbrido entre un DIAGRAMA DE CLASES y un DIAGRAMA DE ACTIVIDADES Lo que pasa es que necesitbamos de una herramienta que nos permitiera capturar el Qu hacer y luego ayudarnos a decidir Cmo hacerlo. Qu hacer: Anlisis Cmo hacerlo: Diseo
Los smbolos que utilizamos para armar un diagrama de robustez son 3:

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

[Escribir el ttulo del documento]

12

Das könnte Ihnen auch gefallen