Vous êtes sur la page 1sur 8

Que son los Patrones de Diseo ?

Los Patrones de diseo son herramientas para solucionar problemas de


Diseo enfocados al desarrollo de software, estos patrones deben ser
reusables permitiendo as que sean adaptados a
diferentes problemticas.
Cuando hablamos de problemticas nos referimos a condiciones o
problemas reiterativos en el desarrollo de software donde la solucin se
encuentra identificada mediante la aplicacin de una serie de pasos,
adaptando el sistema a una estructura definida por un patrn,
garantizando que esta solucin pueda ser aplicada cuantas veces sea
necesario en circunstancias similares, evitando as la bsqueda de otras
soluciones
cuando
estas
ya se
han dado
anteriormente...
Existen 3 grupos de patrones:

Creacionales: Giran en torno a la creacin de Objetos

Estructurales: Se enfocan en la estructura de clases y objetos


que las componen

De Comportamiento: Definen el modo en que las clases y


objetos son relacionados, el comportamiento he interaccin entre
ellos.

Algunos Patrones.
Vamos a ver algunos de los principales patrones de diseo, daremos una
pequea descripcin en torno al problema y la solucin................mas
adelante realizaremos algunos ejemplos de aplicacin.

Modelo Vista Controlador (MVC)


Es un patrn estructural que permite separar la informacin y lgica de
negocio de la parte visual de la aplicacin y la lgica que gestiona las
relaciones y eventos del sistema.
Problema : Cuando tenemos cdigo que no es fcilmente controlado o
mantenible, debido a que tenemos muchas funcionalidades en una sola
clase y principalmente cuando queremos dar una representacin visual
pero al tener todo centralizado no se puede realizar con eficacia.
Solucin: Se aplica el MVC donde reestructuramos nuestro cdigo
fuente separndolo en 3 partes funcionales con comportamientos
definidos que posteriormente son relacionadas entre si, facilitando la
mantenibilidad y flexibilidad del cdigo, estas 3 partes son el Modelo, la
Vista y el Controlador.

Modelo : Representa la informacin y los datos procesados por el


sistema, gestionando la forma como se accede a estos y la lgica
de negocio de la aplicacin.

Controlador : Representa el puente de interaccin entre el


Modelo y la Vista, define la forma como se relacionan los
componentes de la aplicacin.

Vista : Es la representacin del modelo mediante una interfaz


grfica de usuario, es la forma como el usuario interacta con el
sistema, permitiendo la ejecucin de eventos he ingreso de
informacin que sern procesados por el Modelo.

Observer
Es un patrn de comportamiento permite actualizar automticamente el
estado de un objeto dependiendo del estado de un objeto principal,
cuando el objeto principal cambia sus objetos dependientes se

actualizan.

Problema
:
Cuando
tenemos
una
dependencia de 1 a muchos entre objetos, y se espera que cuando el
estado de un objeto cambie, todos los objetos dependientes de este
tambin cambien de forma automtica, por ejemplo se tiene una
aplicacin de venta de productos administrada por diferentes
vendedores con diferentes aplicativos (web, escritorio, mvil), se espera
que cada vez que cambie la cantidad de productos disponibles, la
aplicacin de cada vendedor automticamente actualic el modulo de
ventas con los nuevos valores sin necesidad de recargar la pgina o
actualizar manualmente el sistema para que muestre los cambios.
Solucin: Se aplica el patrn observador para desacoplar la clase que
contenga objetos dependientes, estableciendo relaciones entre los
objetos, para esto se tiene una clase SujetoConcreto que sera el
objeto principal y tendremos los objetos cliente o dependientes que
serian de clase ObservadorConcreto, cuando el estado del
SujetoConcreto cambia, se enva una seal a cada uno de sus
Observadores y estos automaticamente cambian su estado basados en
el estado del objeto principal.

Value Object (VO)


Consiste bsicamente en la agrupacin de datos dentro de un objeto,
estos datos representan los campos de una tabla o entidad de la BD y
facilitan su mantenimiento y transporte dentro del sistema.

Problema : Al momento de pasar argumentos de un


objeto a un mtodo puede ocasionar que el mtodo reciba gran cantidad
de datos pasados como parmetros, si posteriormente se requiere la
modificacin de uno de esos argumentos se obliga a que todos los
mtodos que reciban estos argumentos sean cambiados, presentndose
problemas de acoplamiento y mantenibilidad.
Solucin: Se crean clases que representan las tablas de la BD que
utiliza el sistema, de esta manera las propiedades o atributos de la clase
sern los campos de la entidad, permitiendo encapsular la informacin y
facilitando la manera en que estos son transportados, as al momento de
enviar los parmetros a un mtodo, se enva un solo objeto que los
contiene.

Data Access Object (DAO)


Facilita y estructura el acceso a la informacin de una Base de Datos,
separando la persistencia de objetos de la lgica de acceso a datos,
brindando mayor flexibilidad ya que por ejemplo al momento de hacer
un cambio en la lgica de negocio, esto seria transparente para la lgica
de acceso a la informacin.

Problema : Se tienen diferentes implementaciones


para el acceso a datos, de esta manera al cambiar el proveedor de BD o
la forma de conexin puede afectar la manera de acceder a los datos

teniendo que implementar nuevamente el proceso en todos los


componentes vinculados.
Solucin: Se utilizan clases DAO para encapsular todos los accesos a la
fuente de datos desacoplando de esta manera la lgica de negocio de la
lgica de acceso a datos, estableciendo mayor organizacin y facilitando
la
mantenibilidad
y
extensibilidad
del
cdigo
fuente.

Delegate.
Permite extender y reutilizar la funcionalidad de una clase sin utilizar el
mecanismo de herencia.

Problema : Se requiere el acceso a atributos de otras clases pero estos


no se pueden heredar, ya que el lenguaje no permite la herencia
mltiple o solo se quiere acceder a cierta informacin de la clase (La
clase A no desea todos los mtodos de la clase B)
Solucin: Se utiliza el patrn Delegate reemplazando la relacin "Es
Un" por la relacin "Usa" delegando la responsabilidad de ejecutar un
proceso concreto usando otro objeto con los permisos para realizarlo,
esto se hace por medio de conceptos como la composicin o agregacin.

Abstract Factory
Representa una fabrica de objetos, permitiendo la construccin de
familias de objetos, es decir tipos de objetos con el mismo enfoque o
relaciones.
Problema : Se requiere la creacin de diferentes grupos de objetos, sin
que se especifique la forma de hacerse, el cliente (la clase que ejecute
el evento de creacin) que solicite el objeto no necesita saber como se

crear, este proceso deber ser transparente para el, el cliente solo
requiere una instancia de alguno de los grupos de objetos disponibles.

Solucin: Se utiliza el patrn


Abstract Factory para independizar la manera como se crearn los
objetos concretos de forma que sea independiente de la clase que los
solicita, por ejemplo si queremos crear un objeto hamburguesa
podemos usar el patrn para definir familias de Hamburguesas
agrupndolas por hamburguesas McDonalds, Wendys y Texas, sin
importar
el
tipo
siempre
se
creara
un
objeto
hamburguesa pero con las caractersticas propias de cada grupo de
familia
disponible.

Singleton
Permite la creacin de una nica instancia de clase permitiendo que sea
global para toda la aplicacin.

Problema : Se debe restringir la creacin de un tipo especifico de


objetos a una nica instancia garantizando un punto nico de acceso
para todo el sistema.

Solucin: Se utiliza el patrn Singleton como mecanismo para limitar


el numero de instancias de la clase, compartiendo la misma instancia
por diferentes objetos del sistema, obteniendo una variable global para
toda
la
aplicacin.

Decorator
Este patrn permite agregar funcionalidades o responsabilidades a
objetos de forma transparente y dinmica, sin ser dependiente de la
herencia en su totalidad.

Problema:Cuando
se
quiere adherir responsabilidades o comportamientos especficos a un
objeto pero de forma dinmica, es decir, permitiendo al usuario aplicar
el comportamiento que desea, extendiendo funcionalidades de otras
clases sin estar obligado a hacerlo mediante la herencia.
Solucin: Se utiliza el patrn Decorator para adherir funcionalidades a
un objeto implementando y creando relaciones con otras clases para
incorporar dichas funcionalidades de forma dinmica, por ejemplo si
tenemos una clase ventana, podemos usar el patrn para adherir otros
comportamientos como por ejemplo darle estilos a la ventana,
diferentes colores, bordes, tamao, marco, entre otros componentes
que deseamos vincular, los cuales se encuentran en diferentes clases.

Adapter.

Permite la cooperacin entre clases para extender sus funcionalidades a


clases de diferentes tipos, que no pueden usarlas por mecanismos
comunes
como
la
herencia.

Problema : Cuando se quiere utilizar una clase existente, pero su


interfaz no es compatible o no esta relacionada con la clase que la va a
utilizar.
Solucin: Utilizando el patrn Adapter podemos relacionar clases
incompatibles entre si, generando un mecanismo que permita extender
su comportamiento por medio de una clase puente que sirva como
interfaz entre la clase en cuestin y el resto de clases que quieran hacer
uso de sus funcionalidades.

Vous aimerez peut-être aussi