Sie sind auf Seite 1von 6

Creacionales Estructurales

Restringen o controlan la Describen cómo los


forma en que creamos los objetos y clases se pueden
objetos, evitando que el combinar para formar
usuario utilice la instrucción estructuras más grandes y
new para crear nuevas complejas.
instancias

Abstract Factory Composite


Factory Method Decorator
Object Pool Flyweight
Prototype Adapter
Singleton Facade
Builder Bridge
Proxy

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í

Iterator Templete Method Iterator


Mediator Strategy Command
Memento Chain of Resp Observer

Comportamiento
Patrones Creacionales patronesdediseño.com

Patrón Factory Method


Tipo: Creacional
1. El cliente le solicita al ConcreteFactory la
creación del ProductA.
Factory Method permite la creación 2. El ConcreteFactory localiza la implementación
de objetos de un subtipo concreta de ProductA y crea una nueva instancia.
determinado a través de una clase 3. El ConcreteFactory regresa el
ConcreteProductA creado.
Factory. Esto es especialmente útil 4. El cliente le solicita al ConcreteFactory la
cuando no sabemos, en tiempo de creación del ProductB.
diseño, el subtipo que vamos a 5. El ConcreteFactory localiza la implementación
utilizar o cuando queremos delegar concreta del ProductB y crea una nueva instancia.
6. El ConcreteFactory regresa el
la lógica de creación de los objetos a ConcreteProductB creado.
una clase Factory .

Patrón Abstract Factory 1. El cliente solicita la creación del ConcreteFactory1


al AbstractFactory.
Tipo: Creacional 2. El AbstractFactory crea una instancia del
ConcreteFactory1 y la regresa.
3. El cliente le solicita al ConcreteFactory1 la creación
Agrupar un conjunto de clases que tiene de un ProductA.
un funcionamiento en común llamadas 4. El ConcreteFactory1 crea una instancia del
familias, las cuales son creadas mediante ProductA1 que es parte de la familia1 y lo regresa.
un Factory, este patrón es especialmente 5. El cliente esta vez solicita la creación del
útil cuando requerimos tener ciertas ConcreteFactory2 al AbstractFactory.
familias de clases para resolver un 6. El AbstractFactory crea una instancia del
problema, sin embargo, puede que se ConcreteFactory2.
requieran crear implementaciones 7. El cliente le solicita al ConcreteFactory2 la
paralelas de estas clases para resolver el creación de un ProductA.
mismo problema pero con una 8. El ConcreteFactory2 retorna una instancia del
implementación distinta. ProductA2 el cual es parte de la familia2.

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 Builder 1. El cliente crea una instancia del ObjectBuilder.


2. El cliente ejecuta el paso 1 de la creación en el
ObjectBuilder.
Tipo: Creacional 3. Internamente el ObjectBuilder crea al
TargetObject.
Permite crear objetos complejos a 4. El cliente ejecuta el paso 2 de la creación en el
ObjectBuilder.
través de uno más simple, el cual,
5. Internamente el ObjectBuileder crea un
mediante métodos de utilidad, va OtherObjectA.
creando secciones de un objeto 6. El cliente ejecuta el paso 3 de la creación en el
más grande, de tal forma que ObjectBuilder.
7. Internamente el ObjectBuilder crear el
olvidamos de la complejidad de la
OtherObjectB.
estructura interna de los objetos. 8. El cliente solicita al ObjectBuilder la creación del
TargetObject, éste toma todos los objetos creados
anteriormente, los asocia al TargetObject y lo
regresa.

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 Object Pool 1. El cliente solicita un objeto al


ConcreteObjectPool.
Tipo: Creacional 2. El ConcreteObjectPool valida si existen
objetos disponibles, de no ser así solicitará
la creación de un nuevo objeto al
Este es un patrón muy utilizado
ConcreteObjectFactory.
cuando se requiere trabajar con una
3. El ConcreteObjectFactory creará un
gran cantidad de objetos, los cuales
nuevo objeto de tipo
son computacionalmente caros de
ConcretePoolableObject.
crear, este patrón tiene una gran
4. El ConcreteObjectPool regresará el
ventaja en escenarios donde
objeto al cliente.
nuestro programa requiere dichos
5. El cliente realiza cualquier acción con el
objetos por un tiempo muy corto y
objeto.
que luego de su uso son
6. El cliente regresa el objeto al
desechados
ConcreteObjectPool.
Patrones de Comportamiento patronesdediseño.com

Patrón Iterator Tipo: Comportamiento

Permite recorrer una estructura de


datos sin que sea necesario conocer
1. El cliente solicita al ConcreteAggregate la
la estructura interna de la misma. Es creación de un iterador.
especialmente útil cuando 2. El ConcreteAggregate crea un nuevo Iterador.
trabajamos con estructuras de 3. El cliente, para recorrer los elementos, entra en
un ciclo hasta que no existen más elementos en el
datos complejas, ya que nos
iterador, el método hasNext le indicará cuándo se
permite recorrer sus elementos ha llegado al final.
mediante un Iterador, el Iterador es 4. El cliente solicita el siguiente elemento al
una interface que proporciona los iterador mediante el método next.
5. Si existen más elementos nos regresamos al paso
métodos necesarios para recorrer
tres, esto se repite hasta finalizar el recorrido.
los elementos de la estructura de
datos.

Patrón Command
Tipo: Comportamiento

Permite ejecutar operaciones sin


1. El invoker obtiene un Comando del
conocer los detalles de la
CommandManager.
implementación de la misma. Las
2. El invoker ejecuta el comando.
operaciones son conocidas como
3. El invoker obtiene otro Comando del
comandos y cada operación es
CommandManager.
implementada como una clase
4. El invoker ejecuta el comando.
independiente que realiza una
acción muy concreta

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.

Patrón Templete Method


Tipo: Comportamiento

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 Strategy 1. El cliente crea un nuevo contexto y establece la


estrategia A.
2. El cliente ejecuta la operación doSomething.
Tipo: Comportamiento 3. Context a su vez delega esta responsabilidad a
ConcreteStrategyA.
Permite establecer en tiempo de ejecución 4. ConcreteStrategyA realiza la operación y regresa el
el rol de comportamiento de una clase. resultado.
Stretagy se basa en el polimorfismo para 5. Context toma el resultado y lo regresa al cliente.
implementar una serie de 6. El cliente le cambia la estrategia a Context en
comportamientos que podrán ser tiempo de ejecución.
intercambiados durante la ejecución del 7. El cliente ejecuta nuevamente la operación
programa, logrando con esto que un objeto doSomething.
se pueda comportar de forma distinta 8. Context a su vez delega esta responsabilidad a
según la estrategia establecida. ConcreteStrategyB.
9. ConcreteStategyB realiza la operación y regresa el
resultado.
10. Context toma el resultado y lo regresa al cliente.

Patrón Chain of Responsability 1. El cliente solicita el procesamiento de una


solicitud a una cadena de responsabilidad.
2. El primer Handler intenta procesar el mensaje,
Tipo: Comportamiento sin embargo, no es capaz de procesarlo por
alguna razón y envía el mensaje al siguiente de
Permitiendo resolver problemas la cadena.
3. El segundo Handler intenta procesar el
donde no estamos muy seguros de mensaje sin éxito, por lo que envía el mensaje al
qué objeto deberá procesar una siguiente Handler de la cadena.
solicitud concreta; este patrón de 4. El tercer Handler también intenta procesar el
diseño resuelve problemas mensaje sin éxito y envía el mensaje al siguiente
Handler de la cadena.
fácilmente donde la herencia no 5. El HandlerN (Algún handler de la secuencia)
puede. Apoyándose de una por fin es capaz de procesar el mensaje
estructura en forma de cadena exitosamente y regresa una respuesta (opcional)
donde una secuencia de objetos de tal forma que la respuesta es replicada por
todos los Handlers pasados hasta llegar al
tratan de atender una petición. Cliente.
Patrones de Comportamiento (Continuación) patronesdediseño.com

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 Mediator Tipo: Comportamiento

Se encarga de gestionar la forma en 1. El ComponenteA desea comunicarse con el


que un conjunto de clases se ComponenteB y le envía un mensaje por medio del
comunican entre sí, Mediator es mediador.
2. El mediador puede analizar el mensaje con fines
especialmente útil cuando tenemos
de depuración, seguimiento o para canalizar el
una gran cantidad de clases que se mensaje al destinatario.
comunican de forma directa, ya que 3. El mensaje es entregado al destinatario y regresa
mediante la implementación de este una respuesta al mediador.
patrón podemos crear una capa de 4. El mediador recibe la respuesta y la
comunicación bidireccional, en la cual reedirecciona al ComponenteA.
las clases se pueden comunicar con el 5. De igual forma, el proceso se puede repetir del
resto de ellas por medio de un objeto ComponentB al ComponentA repitiendo los pasos
anteriores logrando una comunicación
en común que funge como un
bidireccional.
mediador o intermediario.

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 Null Object


Tipo: Comportamiento 1. El cliente intenta buscar un objeto determinado.
2. El ObjectLookup busca si el objeto solicitado
Evita los valores nulos que puedan existe.
a. Si el objeto solicitado no existe entonces regresa
originar error en tiempo de una instancia de NullObject.
ejecución. Básicamente lo que este 3. Por otra parte, si el objeto es localizado entonces
patrón propone es utilizar instancias se regresa una instancia del ConcreteObject.
que implementen la interface 4. Se regresa al cliente cualquiera de las dos
instancias anteriores, sin embargo, éste nunca
requerida pero con un cuerpo vacío obtendrá una referencia nula en caso de no
en lugar de regresar un valor null. encontrarse.

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 Visitor 1. El cliente crea la estructura (Element).


2. El cliente crea la instancia del Visitante a utilizar
sobre la estructura.
Tipo: Comportamiento 3. El cliente ejecuta el método accept de la estructura.
4. El Element le dice al Visitante con que método lo
debe procesar cada objeto de la estructura.
Separar la lógica u operaciones que 5. El Visitante analiza al Element mediante su método
se pueden realizar sobre una visitElement y repite el proceso de ejecutar el método
estructura compleja. En ocasiones accept sobre los hijos del Element.
6. El ConcreteElementA le indica al Visitante con qué
nos podemos encontrar con método debe procesarlo.
estructuras de datos que requieren 7. La visitante continúa con los demás hijos de
realizar operaciones sobre ella, pero Element y esta vez ejecuta el método accept sobre el
estas operaciones pueden ser muy ConcreteElementB.
8. El ConcrteElementB le indica al Visitante con qué
variadas e incluso se pueden método debe procesarlo, el cual es visitElementB.
desarrollar nuevas a medida que la 9. Finalmente el resultado se obtiene del método
aplicación crece. getResults.
Patrones Estructurales patronesdediseño.com

Patrón Adapter
Tipo: Estructural

es utilizado cuando tenemos 1. El Client invoca al Adapter con parámetros


interfaces de software genéricos.
incompatibles, las cuales a pesar de 2. El Adapter convierte los parámetros genéricos en
su incompatibilidad tiene una parámetros específicos del Adaptee.
3. El Adapter invoca al Adaptee.
funcionalidad similar. Este patrón es 4. El Adaptee responde.
implementado cuando se desea 5. El Adapter convierte la respuesta del Adaptee a
homogeneizar la forma de trabajar una respuesta genérica para el Client.
con estas interfaces incompatibles, 6. El Adapter responde al Client con una respuesta
genérica.
para lo cual se crea una clase
intermedia que funciona como un
adaptador

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.

Das könnte Ihnen auch gefallen