Sunteți pe pagina 1din 8

Patrones de diseo

DEFINICIONES
1) Los patrones de diseo son una tcnica para resolver problemas comunes
en el desarrollo de software y otros mbitos referentes al diseo de
interaccin o interfaces. Un patrn de diseo resulta ser una solucin a un
problema de diseo. Para que una solucin sea considerada un patrn debe
poseer ciertas caractersticas. Una de ellas es que debe haber comprobado
su efectividad resolviendo problemas similares en ocasiones anteriores. Otra
es que debe ser reutilizable, lo que significa que es aplicable a diferentes
problemas de diseo en distintas circunstancias.

2) Los patrones de diseo son soluciones para problemas tpicos y recurrentes


que nos podemos encontrar a la hora de desarrollar una aplicacin. Aunque
nuestra aplicacin sea nica, tendr partes comunes con otras aplicaciones:
acceso a datos, creacin de objetos, operaciones entre sistemas etc. En
lugar de reinventar la rueda, podemos solucionar problemas utilizando algn
patrn, ya que son soluciones probadas y documentadas por multitud de
programadores.

En 1979 el arquitecto Christopher Alexander aport al mundo de la arquitectura el


libro The Timeless Way of Building; en l propona el aprendizaje y uso de una serie
de patrones para la construccin de edificios de una mayor calidad, en la que esa
mayor calidad se refera a la arquitectura antigua y la menor calidad corresponda a
la arquitectura moderna, que el romper con la arquitectura antigua haba perdido
esa conexin con lo que las personas consideraban que era calidad.
En palabras de este autor, "Cada patrn describe un problema que ocurre infinidad
de veces en nuestro entorno, as como la solucin al mismo, de tal modo que
podemos utilizar esta solucin un milln de veces ms adelante sin tener que volver
a pensarla otra vez."

OBJETIVOS DE LOS PATRONES


Los patrones de diseo pretenden:
Proporcionar catlogos de elementos reusables en el diseo de sistemas
software.
Evitar la reiteracin en la bsqueda de soluciones a problemas ya conocidos
y solucionados anteriormente.
Formalizar un vocabulario comn entre diseadores.
Estandarizar el modo en que se realiza el diseo.
Facilitar el aprendizaje de las nuevas generaciones de diseadores
condensando conocimiento ya existente.
Asimismo, no pretenden:
Imponer ciertas alternativas de diseo frente a otras.
Eliminar la creatividad inherente al proceso de diseo.
No es obligatorio utilizar los patrones, solo es aconsejable en el caso de tener el
mismo problema o similar que soluciona el patrn, siempre teniendo en cuenta que
en un caso particular puede no ser aplicable. "Abusar o forzar el uso de los patrones
puede ser un error".

TIPOS
Clasificacin de los patrones Segn su propsito:
De creacin: conciernen al proceso de creacin de objetos.
De estructura: tratan la composicin de clases y/o objetos.
De comportamiento: caracterizan las formas enlas que interactan y reparten
responsabilidades las distintas clases u objetos.

Pues bien, dependiendo del problema al que nos enfrentemos, podemos agrupar
los patrones en tres grandes grupos:
Patrones de creacin. Estos patrones se utilizan cuando debemos crear
objetos, pero debemos tomar decisiones dinmicamente en el proceso de
creacin. Para sto lo que hacemos es abstraer el proceso de creacin de
los objetos para realizar la decisin de qu objetos crear o cmo crearlos
para el momento en que se tenga que hacer. Patrones de creacin son:
Abstract Factory, Builder, Factory Method, Object Pool, Prototype y
Singleton.
Patrones estructurales. Nos describen como utilizar estructuras de datos
complejas a partir de elementos ms simples. Sirven para crear las
interconexiones entre los distintos objetos y que estas relaciones no se vean
afectadas por cambios en los requisitos del programa. Algunos ejemplos de
patrones estructurales son: Adapter, Bridge, Decorator, Facade, Flyweight y
Proxy.
Patrones de comportamiento. Fundamentalmente especifican el
comportamiento entre objetos de nuestro programa. Hay varios: Chain of
Responsability, Command, Interpreter, Iterator, Mediator, Memento (o
Snapshot), Observer, State, Strategy, Template Method y Visitor.

Qu tipos de patrones existen?


Existen diversas maneras de agrupar los patrones de diseo. Quiz la ms
extendida es agruparlos segn su propsito. En este caso tendramos las siguientes
categoras:
Patrones creacionales: utilizados para instanciar objetos, y as separar la
implementacin del cliente de la de los objetos que se utilizan. Con ellos
intentamos separar la lgica de creacin de objetos y encapsularla.
Patrones de comportamiento: se utilizan a la hora de definir como las clases y
objetos interaccionan entre ellos.
Patrones estructurales: utilizados para crear clases u objetos que incluidos
dentro de estructuras ms complejas.

Patrones creacionales
Corresponden a patrones de diseo de software que solucionan problemas de
creacin de instancias. Nos ayudan a encapsular y abstraer dicha creacin:
Object Pool (no pertenece a los patrones especificados por GoF): se
obtienen objetos nuevos a travs de la clonacin. Utilizado cuando el costo
de crear una clase es mayor que el de clonarla. Especialmente con objetos
muy complejos. Se especifica un tipo de objeto a crear y se utiliza una interfaz
del prototipo para crear un nuevo objeto por clonacin. El proceso de
clonacin se inicia instanciando un tipo de objeto de la clase que queremos
clonar.
Abstract Factory (fbrica abstracta): permite trabajar con objetos de distintas
familias de manera que las familias no se mezclen entre s y haciendo
transparente el tipo de familia concreta que se est usando. El problema a
solucionar por este patrn es el de crear diferentes familias de objetos, como
por ejemplo, la creacin de interfaces grficas de distintos tipos (ventana,
men, botn, etc.).
Builder (constructor virtual): abstrae el proceso de creacin de un objeto
complejo, centralizando dicho proceso en un nico punto.
Factory Method (mtodo de fabricacin): centraliza en una clase constructora
la creacin de objetos de un subtipo de un tipo determinado, ocultando al
usuario la casustica, es decir, la diversidad de casos particulares que se
pueden prever, para elegir el subtipo que crear. Parte del principio de que las
subclases determinan la clase a implementar.
Prototype (prototipo): crea nuevos objetos clonndolos de una instancia ya
existente.
Singleton (instancia nica): garantiza la existencia de una nica instancia
para una clase y la creacin de un mecanismo de acceso global a dicha
instancia. Restringe la instanciacin de una clase o valor de un tipo a un solo
objeto.
Model View Controller (MVC) En espaol: Modelo Vista Controlador. Es un
patrn de arquitectura de software que separa los datos y la lgica de
negocio de una aplicacin de la interfaz de usuario y el mdulo encargado de
gestionar los eventos y las comunicaciones. Este patrn plantea la
separacin del problema en tres capas: la capa model, que representa la
realidad; la capa controller , que conoce los mtodos y atributos del modelo,
recibe y realiza lo que el usuario quiere hacer; y la capa vista, que muestra
un aspecto del modelo y es utilizada por la capa anterior para interactuar con
el usuario.

Patrones estructurales
Son los patrones de diseo software que solucionan problemas de composicin
(agregacin) de clases y objetos:

Adapter o Wrapper (Adaptador o Envoltorio): Adapta una interfaz para que


pueda ser utilizada por una clase que de otro modo no podra utilizarla.
Bridge (Puente): Desacopla una abstraccin de su implementacin.
Composite (Objeto compuesto): Permite tratar objetos compuestos como si
de uno simple se tratase.
Decorator (Decorador): Aade funcionalidad a una clase dinmicamente.
Facade (Fachada): Provee de una interfaz unificada simple para acceder a
una interfaz o grupo de interfaces de un subsistema.
Flyweight (Peso ligero): Reduce la redundancia cuando gran cantidad de
objetos poseen idntica informacin.
Proxy: Proporciona un intermediario de un objeto para controlar su acceso.
Module: Agrupa varios elementos relacionados, como clases, singletons, y
mtodos, utilizados globalmente, en una entidad nica.

Patrones de comportamiento
Se definen como patrones de diseo software que ofrecen soluciones respecto a la
interaccin y responsabilidades entre clases y objetos, as como los algoritmos que
encapsulan:

Chain of Responsibility (Cadena de responsabilidad): Permite establecer la


lnea que deben llevar los mensajes para que los objetos realicen la tarea
indicada.
Command (Orden): Encapsula una operacin en un objeto, permitiendo
ejecutar dicha operacin sin necesidad de conocer el contenido de la misma.
Interpreter (Intrprete): Dado un lenguaje, define una gramtica para dicho
lenguaje, as como las herramientas necesarias para interpretarlo.
Iterator (Iterador): Permite realizar recorridos sobre objetos compuestos
independientemente de la implementacin de estos.
Mediator (Mediador): Define un objeto que coordine la comunicacin entre
objetos de distintas clases, pero que funcionan como un conjunto.
Memento (Recuerdo): Permite volver a estados anteriores del sistema.
Observer (Observador): Define una dependencia de uno-a-muchos entre
objetos, de forma que cuando un objeto cambie de estado se notifique y
actualicen automticamente todos los objetos que dependen de l.
State (Estado): Permite que un objeto modifique su comportamiento cada vez
que cambie su estado interno.
Strategy (Estrategia): Permite disponer de varios mtodos para resolver un
problema y elegir cul utilizar en tiempo de ejecucin.
Template Method (Mtodo plantilla): Define en una operacin el esqueleto de
un algoritmo, delegando en las subclases algunos de sus pasos, esto permite
que las subclases redefinan ciertos pasos de un algoritmo sin cambiar su
estructura.
Visitor (Visitante): Permite definir nuevas operaciones sobre una jerarqua de
clases sin modificar las clases sobre las que opera.

CUALIDADES DEL SOFTWARE QUE PROPICIAN

Un patrn de diseo nomina, abstrae e identifica los aspectos clave de una


estructura de diseo comn, lo que los hace tiles para crear un diseo orientado a
objetos reutilizable.

Patrones Creacionales
Estos patrones brindan las siguientes caractersticas:
Instanciacin genrica: permite que los objetos sean creados dentro del sistema
sin especificar clases concretas en el cdigo.
Simplicidad: algunos patrones facilitan la creacin de objetos, evitando que el
cliente deba tener cdigo complejo sobre como instanciar un determinado objeto.
Restricciones creacionales: algunos patrones ayudan a establecer restricciones
sobre la creacin de objetos, tales como qu objeto crear, cundo, cmo, etc.

Patrones estructurales
La flexibilidad aadida mediante la composicin de objetos viene dada por la
capacidad de cambiar la composicin en tiempo de ejecucin, que es imposible con
la composicin de clases.
Ejemplos tpicos son cmo comunicar dos clases incompatibles o cmo
aadir funcionalidad a objetos.

Patrones de comportamiento
Estos patrones se focalizan en el flujo de control dentro de un sistema. Ciertas
formas de organizar los controles dentro del sistema pueden llevar a grandes
beneficios en cuanto a mantenibilidad y eficiencia.

Resistencia al cambio: se debe elegir el patrn que facilite lo ms posibles futuros


cambios. Los cambios en un diseo no son probables, son seguros, se producen
con toda seguridad. A la hora de disear una solucin a un problema es conveniente
abstraer el problema concreto a otro ms genrico y resolver este ltimo. Los
patrones consiguen precisamente esto.

Reutilizacin: este aspecto requiere una aclaracin importante. La reutilizacin de


cdigo resulta prcticamente imposible. En cambio, los diseos son mucho ms
reutilizables, pero ni siquiera tanto como las propias ideas. Se debe tender a
reutilizar las ideas. Por eso, cuando hacemos un diseo debemos pensar en que
nos debe ser til para futuros proyectos, en su esencia o filosofa, no en su
estructura o implementacin. As, lo conveniente es buscar patrones nuevos en
diseos nuevos, documentarlos y almacenarlos como una parte importante de
nuestra experiencia. Son como una "lbum de fotos" de nuestros viajes.

POR SI COMPARAN LOS PATRONES ARQUITECTONICOS CON LOS


PATRONES DE DISEO
Los patrones arquitectnicos podran considerarse estrategias de alto nivel que
abarcan componentes a gran escala, propiedades y mecanismos del sistema.
Tienen implicancias muy amplias que afectan tanto a la estructura como a la
organizacin del sistema. Los patrones de diseo son tcticas de medio nivel para
profundizar en la estructura y comportamiento de ciertos componentes y sus
relaciones. Los patrones de diseo no influencian la estructura del sistema, sino que
definen micro-arquitecturas para los subsistemas y componentes. Por ltimo, los
modismos son tcnicas especficas del paradigma y lenguaje de programacin que
complementan detalles de bajo nivel (internos o externos) de la estructura de un
componente.

S-ar putea să vă placă și