Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Diego Sandoval
Bogota 2019
GANG OF FOUR 2
Patrones de creación
ABSTRACT FACTORY
de objetos ya que la creación de objetos se hace dependiente del lugar donde se esté
Solución: Es una interface llamada Factory la cual nos envía un conjunto de objetos
creación de objetos distintos que surjan por medio del cambio del sistema,
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
ser construido pero existen diferentes maneras para poder construir bajo esa
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
único punto. Esto nos permite mediante un procedimiento único, crear objetos complejos de
FACTORY METHOD
Problema: Una clase no puede anticipar el tipo de objeto que ella debe crear y quiere que
Solución: Define la interfaz de creación de un cierto tipo de objeto, permitido que las
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
Solución: Para que se cumpla que solo sea una vez instanciada dicha clase tiene que ser
RESUMEN
Nuestro objetivo será garantizar que la clase en cuestión no pueda generar más de una
nombres, mejorando la utilidad proporcionada por las variables globales y el control de acceso a
Patrones estructurales
ADAPTER
Solución: Crearemos una clase adaptador que herede de la clase o clases a adaptar, cuyos
interfaz que deseamos utilizar. La a datación se realiza llamando a los métodos del padre.
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
BRIDGE
Problema: Se tiene que evitar enlaces permanentes entre una abstracción y una
Solución: Partimos de una abstracción base que tendrá como atributo un objeto que será
Nuestra abstracción contendrá todas las operaciones que nuestro sistema requiera.
RESUMEN
implementación de una abstracción puede ser configurada y/o cambiada en tiempo de ejecución
COMPOSITE
individuales y el objeto final tiene que contener una serie de elementos que son, o bien
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
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
DECORATOR
encapsulará las nuevas responsabilidades. Esta nueva clase se encarga de redirigir las
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
FACADE
código de uso.
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
FLYWIGHT
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
RESUMEN
similares y además simplifica el uso de sistemas complejos con tareas redundantes y oculta al
PROXY
Problema: Hay que controlar un objeto intermediario que represente o sustituya al objeto
Solución: La solución a este problema es crear una interfaz Subject que defina toda la
RESUMEN
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
comando mediante la definición del método execute. Para ello utilizaremos los métodos
RESUMEN
implementación de las mismas; como las ordenes son objetos podemos aplicar la herencia a las
CHAIN OF RESPONSIBILITY
GANG OF FOUR 11
Problema: Varios objetos pueden manejar cierta petición, y el manejador no se conoce a priori, sino
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
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
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
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
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
RESUMEN
independientes y además nos permite variar el tratamiento de las listas modificando tan solo la
MEDIATOR
Problema: El sistema tiene gran número de objetos que se comunican de forma activa, y
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
evidente debemos implementar dicha interfaz mediante una clase ConcreteMediator para
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
MEMENTO
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
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
OBSERVER
Problema: Hay objetos que dependen de otros, necesitando ser notificados en caso de
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,
clases.
GANG OF FOUR 15
STATE
Solución: podemos definir el estado de un objeto como el conjunto actual de los valores
RESUMEN
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
STRATEGY
métodos.
Solución: El usuario podrá autenticarse mediante una configuración de usuario por XML,
nuestro cliente podrá configurar la aplicación para elegir que método de autenticación que
RESUMEN
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
TEMPLATE METHOD
Solución: Se tiene que abstraer todo el comportamiento que comparten las entidades
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
RESUMEN
El patrón de diseño Visitor se utiliza para separar la lógica u operaciones que se pueden
References