Está en la página 1de 19

Running head: GANG OF FOUR 1

PATRONES DE DISEÑO: GANG OF FOUR

Diego Sandoval

Politecnico Gran Colombiano

Bogota 2019
GANG OF FOUR 2

Patrones de creación

ABSTRACT FACTORY

Problema: Abstrae la creación de objetos ya que el problema que tenemos es la creación

de objetos ya que la creación de objetos se hace dependiente del lugar donde se esté

ejecutando nuestra aplicación.

Solución: Es una interface llamada Factory la cual nos envía un conjunto de objetos

relacionados sin explicar sus implementaciones y de diferentes clases evitando la

creación de objetos distintos que surjan por medio del cambio del sistema,

instalaciones o despliegues de los sistemas.

RESUMEN

Básicamente lo que hace actúa mediante herencia de objetos a través de las factorías las

cuales van a tener la misma interfaz que la fabrica abstracta, y todas ellas van a tener los mismos

métodos lo único que harán en crear objetos de la factoría correspondiente un ejemplo seria verlo

como una tienda de mercado que se llamara Factory tienda y lo que hace es retornar objetos de la

misma fábrica o en este caso Factory tienda como por ejemplo frutas las cuales tendrán los

mismos métodos que tienen en otras tiendas u otras fábricas básicamente relaciona objetos de

diferentes clases.
GANG OF FOUR 3

BUILDER

Problema: un objeto que este compuesto de otros elementos ya tiene su especificación de

ser construido pero existen diferentes maneras para poder construir bajo esa

especificación en particular; el proceso de construcción pude crear diferente

representaciones de la misma especificación de cómo hacerlo.

Solución: Separa la creación de un objeto complejo de su estructura, de tal forma que el

mismo proceso de construcción nos puede servir para crear representaciones diferentes.

RESUMEN

Como hemos dicho, mediante este patrón pretendemos crear objetos complejos a partir de

un objeto fuente, también denominado producto, centralizando el proceso de creación en un

único punto. Esto nos permite mediante un procedimiento único, crear objetos complejos de

distintas clases únicamente configurando el Builder.


GANG OF FOUR 4

FACTORY METHOD

Problema: Una clase no puede anticipar el tipo de objeto que ella debe crear y quiere que

sus subclases especifiquen dichos objetos.

Solución: Define la interfaz de creación de un cierto tipo de objeto, permitido que las

subclases decidan que clase concreta necesitan instancias.

RESUMEN

Lo que hace es encapsular la lógica de creación de los objetos de tal forma que el

resultado esta encapsulado tras una interface común, desacoplando al cliente de la clase del

objeto creado

PROTOTYPE

Problema: Es costoso en algunos casos la creación de un objeto desde cero y mucho mas

si el mismo tendrá muchos atributos además dichos objetos suelen tener atributos que

repiten su valor.

Solución: Se define una interfaz que expone el método necesario para realizar la

clonación del objeto. Las clases que pueden ser clonadas implementarán esta interfaz,

mientras que las clases que deseen clonar deberán utilizar el método definido en la

interfaz.
GANG OF FOUR 5

RESUMEN

Básicamente lo que hace este patrón es realizar copias de objetos logrando que el cliente

no conozca acerca de los detalles de cómo se construyó el objeto prototipo; por otro lado es más

fácil clonar un objeto que crearlo por costes atributos etc. también logra una reducción del

numero de subclases.

SINGLETON

Problema: Un sistema posee una clase que solo debe ser instanciada una sola vez y

además dicha clase requiere de un punto de acceso global y conocido.

Solución: Para que se cumpla que solo sea una vez instanciada dicha clase tiene que ser

de tipo privado y básicamente el acceso al atributo será desde un método publico

y estático; en caso de no estar instanciado el atributo que representa la instancia, lo cr

ea y en caso de que dicho atributo ya esté instanciado, lo devuelve.

RESUMEN

 Nuestro objetivo será garantizar que la clase en cuestión no pueda generar más de una

instancia y proporcionar un punto de acceso fijo a la misma; además Reduce el espacio de

nombres, mejorando la utilidad proporcionada por las variables globales y el control de acceso a

la instancia será única.


GANG OF FOUR 6

Patrones estructurales

ADAPTER

Problema: Necesitamos que un conjunto de clases con interfaces incompatibles sea

capaz de cooperar entre sí.

Solución: Crearemos una clase adaptador que herede de la clase o clases a adaptar, cuyos

métodos pueden ser sobrescritos. Además, el adaptador deberá implementar la nueva

interfaz que deseamos utilizar. La a datación se realiza llamando a los métodos del padre.

No permite la adaptación de las subclases de la clase adaptada.

RESUMEN

Tenemos que implementar una clase que pueda ser reusable y que coopere con clases no

relacionadas, es decir, las clases que no tienen necesariamente interfaces compatibles también

nos permite adaptar clases de dominios totalmente diferentes y un único adaptador puede adaptar

la funcionalidad de múltiples clases.

BRIDGE

Problema: Se tiene que evitar enlaces permanentes entre una abstracción y una

implementación y los cambios en la implementación de una abstracción no afecten al cliente.


GANG OF FOUR 7

Solución: Partimos de una abstracción base que tendrá como atributo un objeto que será

el que realice las funciones a implementar y que denominaremos implementador.

Nuestra abstracción contendrá todas las operaciones que nuestro sistema requiera.

RESUMEN

Una implementación no se limita permanentemente a una interface además La

implementación de una abstracción puede ser configurada y/o cambiada en tiempo de ejecución

y Desacoplando Abstracción e Implementar también se eliminan las dependencias sobre la

implementación en tiempo de compilación.

COMPOSITE

Problema: El usuario ignora la diferencia entre composiciones de objeto y objetos

individuales y el  objeto final tiene que contener una serie de elementos que son, o bien

contenedores o bien objetos de las clases relacionadas.

Solución: Se define una serie de comportamientos comunes tanto para las clases como

para los contenedores y así podemos tratar tanto a contenedores como a elementos de

manera homogénea mediante el uso de la recursión

RESUMEN

Este patrón composite objeto final tiene que contener una serie de elementos que son, o

bien contenedores o bien objetos de las clases relacionadas también permite la estructura y los

objetos individuales de una forma uniforme además permite añadir nuevas clases de

componentes de manera sencilla.


GANG OF FOUR 8

DECORATOR

Problema: Nuestro sistema requiere que la funcionalidad de ciertos componentes pueda

extenderse y modificarse en tiempo de ejecución

Solución: Crearemos un nuevo peldaño en la jerarquía de clases llamado Decorador que

encapsulará las nuevas responsabilidades. Esta nueva clase se encarga de redirigir las

peticiones al componente original además de permitir la modificación de ciertos aspectos

antes y después de dicha redirección.

RESUMEN

Este patrón tiene como desventaja que genera gran cantidad de objetos pequeños; por

otro lado, es mucho más flexible que la herencia y también evita la misma con muchas clases y

herencia múltiple y permite añadir y eliminar responsabilidades en tiempo de ejecución.

FACADE

Problema: Hay tareas o configuraciones muy frecuentes y es conveniente simplificar el

código de uso.

Solución:  consiste en crear una clase fachada que proporcione la funcionalidad de

manera sencilla a nuestro sistema cliente. Dicha clase utilizará la clase compleja o los

distintos componentes de los sistemas requeridos y los ofrecerá por medio de operaciones

más simples.

RESUMEN
GANG OF FOUR 9

Este patrón simplifica el uso de sistemas complejos con tareas redundantes y también

oculta la cliente la complejidad que en realidad posee el sistema y reduce el acoplamiento entre

el subsistema y los clientes.

FLYWIGHT

Problema: Se necesita eliminar o reducir la redundancia cuando se tiene gran cantidad de

objetos que comparten bastante información.

Solución: Se deben abstraer las características del elemento que se replica en 2 grupo: las

intrínsecas y las extrínsecas. Las primeras hacen referencia a los estados comunes que

tiene el objeto o grupo de objetos a replicar, mientras que las segundas aluden a las

características propias de la instancia.

RESUMEN

 trata de aumentar el rendimiento de aplicaciones en las que se usan multitud de objetos

similares y además simplifica el uso de sistemas complejos con tareas redundantes y oculta al

cliente la complejidad del sistema.

PROXY

Problema: Hay que controlar un objeto intermediario que represente o sustituya al objeto

original con motivo de controlar el acceso y otras características de este.

Solución: La solución a este problema es crear una interfaz Subject que defina toda la

funcionalidad que nuestro objeto ha de proveer. Esta interfaz,

evidentemente, ha de ser implementada por el objeto real. Crearemos


GANG OF FOUR 10

también un Objeto Proxy que mantendrá una referencia al objeto real, y

que además implementará la interfaz Subject, de modo que a la hora de

precisar la funcionalidad sea indiferente si se está ejecutando el Proxy o el objeto real.

RESUMEN

El patrón Proxy proporciona un objeto intermediario entre el cliente y el objeto a utilizar,

que permite configurar ciertas características (como el acceso) sin necesidad de modificar la

clase original.

Patrones de acoplamiento
COMMAND

Problema: Las órdenes que debemos desarrollar son de alto nivel y por debajo son

implementadas por órdenes simples (primitivas).

Solución: Las clases que implementen Comando, a las que llamaremos

ConcreteCommands, definirán la funcionalidad de la orden a la que representa el

comando mediante la definición del método execute. Para ello utilizaremos los métodos

del objeto que realmente implementa la funcionalidad, al que llamaremos Receiver.

RESUMEN

Este patrón es bueno en desacoplamiento de la aplicación que invoca las órdenes y la

implementación de las mismas; como las ordenes son objetos podemos aplicar la herencia a las

mismas o realizar composiciones de ordenes además el conjunto de ordenes es escalable.

CHAIN OF RESPONSIBILITY
GANG OF FOUR 11

Problema: Varios objetos pueden manejar cierta petición, y el manejador no se conoce a priori, sino

que debería determinarse automáticamente.

Solución: Se debe encontrar un mecanismo mediante el cual pasar mensajes a través la cadena de

objetos, para que si el que lo recibe no sabe procesarlo lo pase a otro objeto Para lograr esto, crearemos una

interfaz Manejador que permite tratar las peticiones en general. Crearemos también algunos

Manejadores Concretos que son los que se encargan de procesar una petición concreta. El cliente que

desea enviar el mensaje pasará el mismo a un Manejador concreto, que se encargará o bien de

procesarlo o bien de transferirlo a otros objetos que pertenezcan a la cadena.

RESUMEN

 patrón cuyo objetivo principal es desacoplar al emisor de un mensaje del receptor del mismo,

permitiendo de esta manera que más de un objeto responda su nombre viene a raíz de su funcionamiento, ya

que trata de encadenar a los receptores del mensaje que irán pasándoselo hasta que uno de ellos lo procese.

INTERPRTER

Problema: Debemos trabajar con sentencias de un lenguaje que nuestro lenguaje de

programación no reconoce automáticamente.

Solución: puede existir un contexto común a todas las expresiones que defina ciertos

valores, funciones o características del lenguaje que estamos interpretando. Este contexto

será representado con la clase Context. El cliente se encargará de construir el árbol

sintáctico de la expresión y asignar el contexto en caso de haberlo.

RESUMEN

Lo que trata este patrón, como su propio nombre indica, es implementar un intérprete

para un lenguaje concreto. Un ejemplo rápido de lenguaje para saber de lo que hablamos sería el
GANG OF FOUR 12

de las expresiones aritméticas: dada una expresión aritmética debemos ser capaces de construir

un intérprete que tomándola como entrada obtenga el resultado de evaluar dicha expresión.

ITERATOR

Problema: Se tiene que trabajar con objetos que internamente trabajan sobre un grupo de

elementos y debamos poder manejar dichos elementos sin que un cambio en la implementación

de la lista o conjunto afecte al sistema global.

Solución: Se crea una interfaz Iterator que estandarice los métodos para tratar la

colección de elementos. Esta interfaz definirá una serie de operaciones para manipular

los elementos del conjunto, como puede ser next() para obtener el siguiente elemento,

hasNext() para comprobar que sigue habiendo elementos en el conjunto, current() para

obtener el elemento actual o first() para mover el cursor al primer elemento y a la obtener

una referencia al mismo.

RESUMEN

Este patrón estandariza el tratado de elementos de listas on implementaciones

independientes y además nos permite variar el tratamiento de las listas modificando tan solo la

clase que implementa el iterador


GANG OF FOUR 13

MEDIATOR

Problema: El sistema tiene gran número de objetos que se comunican de forma activa, y

dicha comunicación es compleja y está bien definida.

Solución: Se tiene que crear una entidad intermediaria que se encargue de gestionar la

comunicación entre objetos. En primer lugar, definiremos una interfaz para exponer las

operaciones que un intermediario puede realizar, la cual llamaremos Mediator. Como es

evidente debemos implementar dicha interfaz mediante una clase ConcreteMediator para

dotar a éste de funcionalidad.

RESUMEN

Este patrón desacopla a los integrantes del sistema de sus interacciones. De esta manera

podrían reutilizarse o modificar los Colleague y los Mediator de manera independiente y también

simplifica la comunicación entre objetos los objetos que se comunican de muchos a muchos

ahora lo harán de uno a muchos disminuyendo su complejidad.

MEMENTO

Problema: Frecuentemente los desarrolladores necesitan guardar el estado de un objeto

para recuperarlo mas tarde; esto es claro, sin perder el encapsulamiento del objeto.

Solución: Utilizando este patrón de diseño (memento) guardara el estado de un objeto sin

romper el encapsulamiento del mismo.

RESUMEN
GANG OF FOUR 14

Este patrón también se usa cuando se requiere poder restaurar el sistema desde estados

pasados además también deja alguna información accesible por otro objeto utilizando control de

acceso por defecto.

OBSERVER

Problema: Hay objetos que dependen de otros, necesitando ser notificados en caso de

que se produzca algún cambio en el .

Solución: Se utilizan los métodos agregarovservador() y quitarobaservador() de la clase

abstracta UNobservador para registrar en un lista que objetos de tipo UnObservador

deberán ser notificados o dejar de serlo cuando se produzca algún cambio en el.

RESUMEN

Define una dependencia de uno-a-muchos entre objetos de forma que, cuando un objeto

cambia de estado, se notifica a los objetos dependientes para que se actualicen automáticamente,

También mantiene la consistencia entre objetos relacionados, si aumentar en acoplamiento entre

clases.
GANG OF FOUR 15

STATE

Problema: Un objeto se comporta diferente dependiendo del estado interno en el que se

encuentre en cada momento

Solución:  podemos definir el estado de un objeto como el conjunto actual de los valores

de los atributos de un objeto desde un punto de vista más coloquial, y refiriéndonos al

patrón que estamos presentando, podríamos definir un estado como un conjunto de

características que harán que el objeto tenga unas características concretas.

RESUMEN

tiene la misión fundamental de encapsular el comportamiento de un objeto dependiendo del

estado en el que éste se encuentre como por ejemplo se puede decir que el estado de un vehículo

es de velocidad instantánea igual a cero, sin consumo de combustible, a una distancia de entre

cero y veinte centímetros de la acera y con el habitáculo vacío desde un punto de vista coloquial

(que ahora mismo es el que nos interesa), podemos decir que la suma de esos atributos nos

informa de que el vehículo se encuentra en estado aparcado.

STRATEGY

Problema: Se desarrolla una aplicación que permita la autenticación mediante diversos

métodos.

Solución: El usuario podrá autenticarse mediante una configuración de usuario por XML,

Base de datos o una configuración en memoria. Mediante el patrón Strategy,


GANG OF FOUR 16

nuestro cliente podrá configurar la aplicación para elegir que método de autenticación que

le es más conveniente, todo esto, sin necesidad de programar nada adicional.

RESUMEN

permite establecer en tiempo de ejecución el rol de comportamiento de una clase.

Stretagy se basa en el polimorfismo para implementar una serie de comportamientos que podrán

ser intercambiados durante la ejecución del programa, logrando con esto que un objeto se pueda

comportar de forma distinta según la estrategia establecida.

TEMPLATE METHOD

Problema: Existe la necesidad de extender determinados comportamientos dentro de un

mismo algoritmo por parte de diferentes entidades.

Solución: Se tiene que abstraer todo el comportamiento que comparten las entidades

en una clase (abstracta) de la que, posteriormente, extenderán dichas

entidades. Esta superclase definirá un método que contendrá el esqueleto

de ese algoritmo común (método plantilla o template method) y delegará

determinada responsabilidad en las clases hijas, mediante uno o

varios métodos abstractos que deberán implementar.


GANG OF FOUR 17

RESUMEN

Este patrón se basa en un principio muy sencillo: si un algoritmo puede aplicarse a varios

supuestos en los que únicamente cambie un pequeño número de operaciones, la idea será utilizar

una clase para modelarlo a través de sus operaciones. Esta clase base se encargará de definir los

pasos comunes del algoritmo, mientras que las clases que hereden de ella implementarán los

detalles propios de cada caso concreto, es decir, el código específico para cada caso.

VISITOR

Problema: En ocasiones nos podemos encontrar con estructuras de datos que requieren

realizar operaciones sobre ella, pero estas operaciones pueden ser muy variadas e incluso

se pueden desarrollar nuevas a medida que la aplicación crece.

Solución: Se realiza la separación de estas operaciones en clases independientes llamadas

Visitantes, las cuales son creadas implementando una interface común y no

requiere modificar la estructura inicial para agregar la operación.

RESUMEN

El patrón de diseño Visitor se utiliza para separar la lógica u operaciones que se pueden

realizar sobre una estructura compleja, a veces es difícil de comprender mantener

y cambiar y también nuevas operaciones requerirán recompilar todas las clases


GANG OF FOUR 18

References

(2018). Biblia del Programmed,

(2016). Patrones de diseño de software - DevExperto

(2015). Un poco de Patrones de Diseño GoF (Gang of Four) – Un poco de Java y


GANG OF FOUR 19

También podría gustarte