Beruflich Dokumente
Kultur Dokumente
patronesdediseño.com
colaboración, relaciones y delegación de responsabilidades
entre otras clases logrando con esto simplificar la forma en
que los objetos se comunican e interactúan entre sí
Comportamiento
Patrones Creacionales patronesdediseño.com
Patrón Singleton
Tipo: Creacional
1. El cliente solicita la instancia al Singleton
Recibe su nombre debido a que mediante el método estático getInstance.
sólo se puede tener una única 2. El Singleton validará si la instancia ya
instancia para toda la aplicación de fue creada anteriormente, de no haber
una determinada clase, esto se sido creada entonces se crea una nueva.
logra restringiendo la libre creación 3. Se regresa la instancia creada en el paso
de instancias de esta clase anterior o se regresa la instancia existente
mediante el operador new e en otro caso.
imponiendo un constructor privado
y un método estático para poder
obtener la instancia.
Patrón Prototype
Tipo: Creacional
1. El cliente solicita la clonación de prototype
basa su funcionalidad en la clonación de mediante el método clone.
objetos, estos nuevos objetos son creados 2. El prototype crea una nueva instancia de si misma
mediante un pool de prototipos elaborados mediante el operador new.
previamente y almacenados. Este patrón es 3. El prototype clona todos sus atributos a la nueva
especialmente útil cuando necesitamos instancia.
crear objetos basados en otros ya 4. Opcionalmente, el prototype puede clonar todos
existentes o cuando se necesita la creación los objetos interno, lo que se conoce como Deep
de estructuras de objetos muy grandes clone o clonación profunda.
5. El nuevo objeto clonado es retornado por el
prototype.
Patrón Command
Tipo: Comportamiento
Patrón Observer
Tipo: Comportamiento 1. El ObserverA se registra con el objeto
Observable para ser notificado de algún
Permite observar los cambios cambio.
producidos por un objeto, de esta 2. El ObserverB se registra con el objeto
forma, cada cambio que afecte el Observable para ser notificado de algún
estado del objeto observado lanzará cambio.
una notificación a los observadores; 3. Ocurre algún cambio en el estado del
a esto se le conoce como Observable.
Publicador-Suscriptor. 4. Todos los Observers son notificados con
el cambio ocurrido.
Se utiliza para implementar algoritmos 1. El cliente crea u obtiene una instancia de una
que realizan los mismos pasos para implementación del templete.
llegar a una solución. Esto se logra 2. El cliente ejecuta el método público
implementando clases bases que templeteMethod del templete.
definan un comportamiento 3. La implementación por default del método
predeterminado. Usualmente es templeteMehod ejecuta en orden los métodos
creado un método para cada paso del step1, step2, step3, stepN.
4. La implementación retorna un resultado.
algoritmo a implementar, de los cuales
algunos serán implementados y otros
permanecerán abstractos hasta su
ejecución por parte de las subclases.
Patrón Interpreter
Tipo: Comportamiento
1. El cliente crea el contexto para la ejecución del
interpreter.
Es utilizado para evaluar un 2. El cliente crea u obtiene la expresión a evaluar.
lenguaje definido como 3. El cliente solicita la interpretación de la
Expresiones, este patrón nos expresión al interpreter y le envía el contexto.
permite interpretar un lenguaje 4. La Expresión manda llamar a las Expresiones No
Terminales que contiene.
como Java, C#, SQL o incluso un 5. La Expresión No Terminal manda llamar a todas
lenguaje inventado por nosotros el las Expresiones Terminales.
cual tiene un significado; y darnos 6. La Expresión Raíz solicita la interpretación de
una respuesta tras evaluar dicho una Expresión Terminal.
7. La expresión se evalúa por completo y se tiene un
lenguaje resultado de la interpretación de todas las
expresiones terminales y no terminales.
Patrón Memento
1. El Cliente aplica un cambio sobre el
Tipo: Comportamiento Originator.
2. El Originator crea un nuevo Memento
Permite capturar el estado de un que representa su estado actual.
objeto en un momento 3. El Cliente guardar el Memento en el
determinado con la finalidad de Caretaker para posteriormente poder
regresar a este estado en cualquier cambiar entre los estados del Originator.
momento. Este patrón es utilizado 4. Después de un tiempo, el Cliente solicita
cuando tenemos objetos que al Caretaker el estado previo del
cambian en el tiempo y por alguna Originator.
razón necesitamos restaurar su 5. El Cliente restaura el estado del
estado en un momento Originator mediante el Memento
determinado. obtenido del Caretaker.
Patrón State
Tipo: Comportamiento
1. Se establece un estado por default al Context, el
cual es StateA.
Permite modificar su 2. Se ejecuta la operación request sobre el Context,
comportamiento dependiendo del la cual delega la ejecución al estado actual (StateA).
estado en el que se encuentra la 3. El Context cambia del estado A al estado B.
4. Se ejecuta nuevamente la operación request
aplicación. Para lograr esto es sobre el Context que delega la ejecución al estado
necesario crear una serie de clases actual (StateB).
que representarán los distintos 5. La ejecución del StateB da como resultado un
estados por los que puede pasar la cambio de estado al StateC.
6. Se ejecuta nuevamente la operación request
aplicación; es decir, se requiere de sobre el Context que delega la ejecución al estado
una clase por cada estado por el actual (StateC).
que la aplicación pueda pasar.
Patrón Adapter
Tipo: Estructural
Patrón Bridge
Tipo: Estructural
1. El cliente ejecuta una operación de
AbstraccionImpl.
Desacopla una abstracción de su 2. AbstraccionImpl replica la petición a
implementación, de manera que las ConcreteImplementor, en este paso el
dos puedan ser modificadas por AbstraccionImpl pudiera realizar una conversión de
los parámetros para ejecutar al
separado sin necesidad de
ConcreteImplementor.
modificar la otra; dicho de otra 3. ConcreteImplementor regresa los resultados al
manera, se desacopla una AbstraccionImpl.
abstracción de su implementación 4. El AbstraccionImpl convierte los resultados del
ConcreteImplementor para ser devueltos al cliente.
para que puedan variar
independientemente
Patrón Composite
Tipo: Estructural 1. El cliente realizar una acción sobre el
CompositeA.
Sirve para construir estructuras 2. CompositeA a su vez realiza una acción
complejas partiendo de otras sobre CompositaB.
mucho más simples; dicho de otra 3. CompositeB realiza una acción sobre
manera, podemos crear estructuras LeafA y LeafB y el resultado es devuelto a
compuestas que están CompositeA.
conformadas por otras estructuras 4. CompositeA propaga la acción sobre
más pequeñas. LeafC, el cual le regresa un resultado.
5. CompositeA obtiene un resultado final
tras la evaluación de toda la estructura y el
cliente obtiene un resultado.
Patrón Decorator
Tipo: Estructural 1. El Cliente realiza una operación sobre el
DecoratorA.
Permite al usuario añadir nuevas 2. El DecoratorA realiza la misma operación sobre
DecoradorB.
funcionalidades a un objeto 3. El decoradorB realiza una acción sobre
existente sin alterar su estructura, ConcreteComponente.
mediante la adición de nuevas 4. El DecoradorB ejecuta una operación de
clases que envuelven a la anterior decoración.
5. El DecoradorA ejecuta una operación de
dándole funcionamiento extra. Este decoración.
patrón está diseñado para 6. El Cliente recibe como resultado un objeto
solucionar problemas donde la decorado por todos los Decoradores, los cuales
jerarquía con subclasificación no encapsularon el Component en varias capas.
puede ser aplicada
Patrón Facade
Tipo: Estructural
1. El cliente invoca una operación de la fachada.
Oculta la complejidad de interactuar con 2. La fachada se comunica con el SubsystemA para
un conjunto de subsistemas realizar una operación.
proporcionando una interface de alto nivel, 3. La fachada se comunica con el SubsystemB para
la cual se encarga de realizar la realizar una operación.
comunicación con todos los subsistemas 4. La fachada se comunica con el SubsystemC para
necesarios, encapsulando la complejidad realizar una operación.
de interactuar individualmente con cada 5. La fachada responde al cliente con el resultado de
subsistema. la operación.
Patrón Flyweight
Tipo: Estructural
1. El cliente solicita al Factory la creación
Centra su atención en la de un objeto Flyweight.
construcción de objetos ligeros, 2. El Factory antes de crear el objeto, valida
mediante la abstracción de las si ya existe un objeto idéntico al que se le
partes reutilizables que pueden ser está solicitando. De ser así, regresa el
compartidas con otros objetos, esto objeto existente; de no existir, crea el
con el fin de que en lugar de crear nuevo objeto y lo almacena en caché para
objetos cada vez que sea requerido, ser reutilizado más adelante.
podamos reutilizar objetos creados 3. El objeto Flyweight se crea o es tomado
por otras instancias del caché y es devuelto al cliente.
Patrones Estructurales (Continuación) patronesdediseño.com
Patrón Proxy
Tipo: Estructural
1. El cliente solicita al Factory un Objeto.
Permite la mediación entre un 2. El Factory crea un Proxy que encapsule al
Object.
objeto y otro. Se dice mediación
3. El cliente ejecuta el Proxy creado por el Factory.
porque este patrón nos permite 4. El Proxy realiza una o varias acciones previas a la
realizar ciertas acciones antes y ejecución del Object.
después de realizar la acción 5. El Proxy delega la ejecución al Object.
6. El Proxy realiza una o varias acciones después de
deseada por el usuario
la ejecución del Object.
7. El Proxy regresa un resultado.