Está en la página 1de 8

71.

10 Tcnicas de Diseo Resumen Patrones de Diseo

Categora: Comportamiento
Cadena de responsabilidad Evita acoplar el emisor de una peticin a su receptor, dando a ms de un objeto la posibilidad de responder a la peticin. Encadena los objetos receptores y pasa la peticin a travs de la cadena hasta que es procesada por algn objeto. Se usa cuando: 1) Hay ms de un objeto que puede manejar una peticin, y el manejador no se conoce a priori, sino que debera determinarse automticamente. 2) Se quiere enviar una peticin a un objeto entre varios sin especificar el receptor. 3) El conjunto de objetos que pueden tratar una peticin deberas er especificado dinmicamente. Consecuencias: 1) Reduce acoplamiento 2) Aade flexibilidad para asignar responsabilidades a objetos. 3) No se garantiza recepcin. Comando Encapsula una peticin en un objeto, permitiendo as parametrizar a los clientes con diferentes peticiones, hacer cola o llevar un registro de las peticiones, y poder deshacer las operaciones. Se usa cuando: 1) Quiero parametrizar objetos con una accin a realizar. 2) Quiero especificar, poner en cola y ejecutar peticiones en diferentes instantes de tiempo. 3) Permitir deshacer. 4) Permitir registrar los cambios de manera que se puedan volver a aplicar en caso de una cada del sistema. 5) Estructurar un sistema alrededor de operaciones de alto nivel construidas sobre operaciones bsicas. Iterador Proporciona un modo de acceder secuencialmente a los elementos de un objeto agregado sin exponer su representacin interna.

Se usa cuando: 1) Para acceder al contenido de un objeto agregado sin exponer su representacin interna. 2) Para permitir varios recorridos sobre objetos agregados. 3) Para proporcionar una interfaz uniforme para recorrer diferentes estructuras agregadas. Consecuencias: 1) Permite variaciones en el recorrido. 2) Simplifica la interfaz Agregado. 3) Se puede hacer ms de un recorrido a la vez.

Leandro Larroulet Pgina 1 de 8

71.10 Tcnicas de Diseo Resumen Patrones de Diseo

Mediador Define un objeto que encapsula cmo interactan una serie de objetos. Promueve un bajo acoplamiento al evitar que los objetos se refieran unos a otros explcitamente, y permite variar la interaccin entre ellos de forma independiente. Se usa cuando: 1) Un conjunto de objetos se comunican de forma bien definida, pero compleja. 2) Es difcil reutilizar un objeto, ya que ste se refiere a otros muchos objetos, con los que se comunica. 3) Un comportamiento que est distribuido entre varias clases debera poder ser adaptado sin necesidad de una gran cantidad de subclases. Consecuencias: 1) Reduce la herencia. 2) Desacopla a los colegas. 3) Simplifica los protocolos de los objetos. Observador Define una dependencia de uno-a-muchos entre objetos, de forma que cuando un objeto cambie de estado se notifique y se actualicen automticamente todos los objetos que dependen de l. Se usa cuando: 1) Cuando una abstraccin tiene dos aspectos y uno depende del otro. 2) Cuando un cambio en un objeto requiere cambiar otros, y no sabemos cuntos objetos necesitan cambiarse. 3) Cuando un objeto debe ser capaz de notificar a otros sin hacer suposiciones sobre quines son dichos objetos. Consecuencias: 1) Acoplamiento abstracto entre sujeto y observador. 2) Capacidad de comunicacin mediante difusin. 3) Actualizaciones inesperadas. Estado Permite que un objeto cambie su comportamiento cada vez que cambie su estado interno. Parecer que cambia la clase del objeto. Se usa cuando: 1) El comportamiento de un objeto depende de su estado, y debe cambiar en tiempo de ejecucin dependiendo de ese estado. 2) Las operaciones tienen largas sentencias condicionales con mltiples ramas que dependen del estado del objeto. Consecuencias: 1) Localiza el comportamiento dependiente del estado y divide dicho comportamiento en diferentes estados. 2) Hace explcitas las transiciones entre estados. 3) Los objetos estado pueden compartirse.

Leandro Larroulet Pgina 2 de 8

71.10 Tcnicas de Diseo Resumen Patrones de Diseo

Strategy Define una familia de algoritmos, encapsula cada uno de ellos y los hace intercambiables. Permite que un algoritmo vare independientemente de los clientes que lo usan. Se usa cuando: 1) Muchas clases relacionadas difieren slo en su comportamiento. 2) Se necesitan distintas variantes de un algoritmo. 3) Un algoritmo usa datos que los clientes no deberan conocer. 4) Una clase define muchos comportamientos y stos se representan como mltiples sentencias condicionales en sus operaciones. Consecuencias: 1) Familias de algoritmos relacionados. 2) Una alternativa a la herencia. 3) Las estrategias eliminan las sentencias condicionales. Template Method Define en una operacin el esqueleto de un algoritmo, delegando en las subclases algunos de sus pasos. Permite que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su estructura. Se usa cuando: 1) Quiero implementar las partes de un algoritmo que no cambian y dejar que sean las subclases quienes implementen el comportamiento que puede variar. 2) Para evitar cdigo duplicado, refactorizando y localizando cdigo comn en una superclase. 3) Controlar extensiones de las subclases. Consecuencias: 1) Reutilizacin de cdigo. Visitor Representa una operacin sobre los elementos de una estructura de objetos. Permite definir una nueva operacin sin cambiar las clases de los elementos sobre los que opera.

Se usa cuando: 1) Las clases que definen la estructura de objetos rara vez cambian, pero muchas veces queremos definir nuevas operaciones sobre la estructura. 2) Una estructura de objetos contiene muchas clases de objetos con diferentes interfaces, y queremos realizar operaciones sobre esos elementos que dependen de su clase concreta. Consecuencias: 1) El visitante facilita aadir nuevas operaciones. 2) Un visitante agrupa operaciones relacionadas y separa las que no lo estn. 3) Es difcil aadir nuevas clases de ElementoConcreto. 4) Visitar varias jerarquas de clases.

Leandro Larroulet Pgina 3 de 8

71.10 Tcnicas de Diseo Resumen Patrones de Diseo

Categora: Estructurales
Adapter Convierte la interfaz de una clase en otra interfaz que es la que esperan los clientes. Permite que cooperen clases que de otra forma no podran por tener interfaces incompatibles.

Se usa cuando: 1) Se quiere usar una clase existente y su interfaz no concuerda con la que se necesita. 2) Se quiere crear una clase reutilizable que coopere con clases no relacionadas o que no han sido previstas. Consecuencias: 1) Adapta una clase Adaptable a Objetivo. 2) Permite que Adaptador redefina parte del comportamiento de Adaptable. 3) Introduce un solo objeto. Bridge Desacopla una abstraccin de su implementacin, de modo que ambas puedan variar de forma independiente.

Se usa cuando: 1) Quiera evitar un enlace permanente entre una abstraccin y su implementacin. 2) Tanto las abstracciones como sus implementaciones deberan ser extensibles mediante subclases. 3) Los cambios en la implementacin de una abstraccin no deberan impactar en los clientes. Consecuencias: 1) Desacopla interfaz y la implementacin. 2) Mejora extensibilidad. 3) Oculta detalles de implementacin a los clientes. Composite Compone objetos en estructuras de rbol para representar jerarquas de parte-todo. Permite que los clientes traten de manera uniforme a los objetos individuales y a los compuestos. Se usa cuando: 1) Quiera representar jerarquas de objetos parte-todo. 2) Quiera que los clientes sean capaces de obviar las diferencias entre composiciones de objetos y los objetos individuales. Se tratarn todos los objetos de la estructura compuesta de manera uniforme. Consecuencias: 1) Define jerarquas de clases formadas por objetos primitivos y compuestos. 2) Simplifica el cliente. 3) Facilita aadir nuevos tipos de componentes. 4) Puede hacer que un diseo sea demasiado general.

Leandro Larroulet Pgina 4 de 8

71.10 Tcnicas de Diseo Resumen Patrones de Diseo

Decorator Asigna responsabilidades adicionales a un objeto dinmicamente, proporcionando una alternativa flexible a la herencia para extender la funcionalidad. Se usa cuando: 1) Para aadir objetos individuales de forma dinmica y transparente, sin afectar a otros objetos. 2) Para responsabilidades que puedan ser retiradas. 3) Cuando la extensin por herencia no es viable. Consecuencias: 1) Ms flexibilidad que la herencia esttica. 2) Evita clases cargadas de funciones en la parte de arriba de la jerarqua. 3) Un decorador y su componente no son idnticos. 4) Muchos objetos pequeos. Facade Proporciona una interfaz unificada para un conjunto de interfaces de un subsistema. Define una interfaz de alto nivel que hace que el subsistema sea ms fcil de usar.

Se usa cuando: 1) Queremos proporcionar una interfaz simple para un subsistema complejo. 2) Hay muchas dependencias entre los clientes y las clases que implementan una abstraccin. 3) Queremos dividir en capas nuestros subsistemas. Consecuencias: 1) oculta a los clientes los componentes del subsistema, reduciendo el nmero de objetos con los que tratan los clientes y haciendo que el subsistema sea ms fcil de usar. 2) Promueve dbil acoplamiento entre subsistema y clientes. 3) No impide que las aplicaciones usen las clases del subsistema en caso de que sea necesario. Proxy Proporciona un representante o sustituto de otro objeto para controlar el acceso a este.

Se usa cuando: 1) Se necesita una referencia a un objeto ms verstil o sofisticada que un simple puntero. Consecuencias: 1) Introduce un nivel de indireccin al objeto. a. Puede ocultar el hecho de que el objeto reside en otro lado. b. Puede crear un objeto por encargo.

Leandro Larroulet Pgina 5 de 8

71.10 Tcnicas de Diseo Resumen Patrones de Diseo

Broker Puede ser utilizado para estructurar sistemas de software distribuido con componentes que interactan por invocaciones de servicio remotas. Es responsable de coordinar la comunicacin, tal como reenviar requests, as tambin como transmitir resultados y excepciones.

Layers Este patrn ayuda a estructurar aplicaciones que pueden ser descompuestas en grupos de subtareas en cada cual cada grupo de subtareas est ubicado en un nivel de abstraccin particular. Se usa cuando: 1) Quiero estructurar mi sistema en capas y ubicar cada una por sobre la otra. Microkernel Aplica a sistemas de software que deben ser capaces de adaptarse a requerimientos de sistema cambiantes. Separa un ncleo funcional mnimo de funcionalidades extendidas y partes especficas del cliente.

Leandro Larroulet Pgina 6 de 8

71.10 Tcnicas de Diseo Resumen Patrones de Diseo

Categora: Creacin
Abstract Factory Proporciona una interfaz para crear familias de objetos relacionados o que dependen entre s, sin especificar sus clases concretas. Se usa cuando: 1) Un sistema debe ser independiente de cmo se crean, componen y representan sus productos. 2) Un sistema debe ser configurado con una familia de productos de entre varias. Consecuencias: 1) Asla clases concretas. 2) Facilita el intercambio de familias de productos. 3) Promueve la consistencia entre productos. 4) Es difcil dar cabida a nuevos tipos de productos. Builder Separa la construccin de un objeto complejo de su representacin, de forma que el mismo proceso de construccin pueda crear diferentes representaciones. Se usa cuando: 1) El algoritmo para crear un objeto complejo debiera ser independiente de las partes de que se compone dicho objeto y de cmo se ensamblan. 2) El proceso de construccin debe permitir diferentes representaciones del objeto que est siendo construido. Consecuencias: 1) Permite variar la representacin interna de un producto. 2) Asla el cdigo de construccin y representacin. 3) Da un control ms fino sobre la creacin.

Factory Method Define una interfaz para crear un objeto, pero deja que sean las subclases quienes decidan qu clase instanciar. Permite que una clase delegue en sus subclases la creacin de objetos. Se usa cuando: 1) Una clase no puede prever la clase de objetos que debe crear. 2) Una clase quiere que sean sus subclases quienes especifiquen los objetos que sta crea. Consecuencias: 1) Elimina necesidad de ligar clases especficas de la aplicacin a nuestro cdigo. 2) Los clientes tendran que heredar de la clase Creador simplemente para crear un determinado objeto concreto.

Leandro Larroulet Pgina 7 de 8

71.10 Tcnicas de Diseo Resumen Patrones de Diseo

Prototype Especifica los tipos de objetos a crear por medio de una instancia prototpica, y crea nuevos objetos copiando dicho prototipo. Se usa cuando: 1) Las clases a instanciar sean especificadas en tiempo de ejecucin. 2) Para evitar construir una jerarqua de clases de fbricas paralela a la jerarqua de clases de los productos. Consecuencias: 1) Aadir y eliminar productos en tiempo de ejecucin. 2) Especificar nuevos objetos modificando valores. 3) Especificar nuevos objetos variando la estructura. 4) Reduce herencia. Singleton Garantiza que una clase slo tenga una instancia, y proporciona un punto de acceso global a ella. Se usa cuando: 1) Debe haber exactamente una instancia de una clase y sta debe ser accesible a los clientes desde un punto de acceso conocido. Consecuencias: 1) Acceso controlado a la nica instancia. 2) Espacio de nombres reducido. 3) Permite refinamiento de operaciones y la representacin. 4) Permite un nmero variable de instancias.

Leandro Larroulet Pgina 8 de 8

También podría gustarte