Sunteți pe pagina 1din 7

Patrn de Diseo

Los patrones de diseo son la base para la bsqueda de soluciones a 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.

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".

Categoras de patrones
Segn la escala o nivel de abstraccin:

Patrones de arquitectura: Aquellos que expresan un esquema organizativo


estructural fundamental para sistemas de software.

Patrones de diseo: Aquellos que expresan esquemas para definir estructuras de


diseo (o sus relaciones) con las que construir sistemas de software.

Dialectos: Patrones de bajo nivel especficos para un lenguaje de programacin


o entorno concreto.

Adems, tambin es importante resear el concepto de "antipatrn de diseo", que con


forma semejante a la de un patrn, intenta prevenir contra errores comunes de diseo en
el software. La idea de los antipatrones es dar a conocer los problemas que acarrean
ciertos diseos muy frecuentes, para intentar evitar que diferentes sistemas acaben una y
otra vez en el mismo callejn sin salida por haber cometido los mismos errores.

Estructuras o plantillas de patrones


Para describir un patrn se usan plantillas ms o menos estandarizadas, de forma que se
expresen uniformemente y puedan constituir efectivamente un medio de comunicacin
uniforme entre diseadores. Varios autores eminentes en esta rea han propuesto
plantillas ligeramente distintas, si bien la mayora definen los mismos conceptos
bsicos.
La plantilla ms comn es la utilizada precisamente por el GoF y consta de los
siguientes apartados:

Nombre del patrn: nombre estndar del patrn por el cual ser reconocido en
la comunidad (normalmente se expresan en ingls).

Clasificacin del patrn: creacional, estructural o de comportamiento.

Intencin: Qu problema pretende resolver el patrn?

Tambin conocido como: Otros nombres de uso comn para el patrn.

Motivacin: Escenario de ejemplo para la aplicacin del patrn.

Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrn.

Estructura: Diagramas de clases oportunos para describir las clases que


intervienen en el patrn.

Participantes: Enumeracin y descripcin de las entidades abstractas (y sus


roles) que participan en el patrn.

Colaboraciones: Explicacin de las interrelaciones que se dan entre los


participantes.

Consecuencias: Consecuencias positivas y negativas en el diseo derivadas de


la aplicacin del patrn.

Implementacin: Tcnicas o comentarios oportunos de cara a la


implementacin del patrn.

Cdigo de ejemplo: Cdigo fuente ejemplo de implementacin del patrn.

Usos conocidos: Ejemplos de sistemas reales que usan el patrn.

Patrones relacionados: Referencias cruzadas con otros patrones.

Relacin de principales patrones GoF (Gang Of Four)


Patrones creacionales:
Corresponden a patrones de diseo 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. A continuacin se muestra un ejemplo de este
patrn:

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. A
continuacin se muestra un ejemplo de este patrn:

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 interaccionar 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: Mantiene un representante de un objeto.

Mdulo: 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.

Patrones de interaccin
El primer intento por aplicar este concepto en el diseo de las interfaces de usuario se
dio por Ward Cummingham y Kent Beck quienes adaptaron la propuesta de C.
Alexander y crearon cinco patrones de interfaz: Window per task, Few panes, Standard
panes, Nouns and verbs, y Short Menu. En aos ms recientes investigadores como
Martin Van Welie, Jennifer Tidwell han desarrollado colecciones de patrones de
interaccin para la World Wide Web. En dichas colecciones captan la experiencia de
programadores y diseadores expertos en el desarrollo de interfaces usables y
condensan esta experiencia en una serie de guas o recomendaciones, que puedan ser
usadas por los desarrolladores novatos con el propsito de que en poco tiempo
adquieran la habilidad de disear interfaces que incidan en la satisfaccin de los
usuarios. Los patrones de interaccin buscan la reutilizacin de interfaces eficaces y un
manejo ptimo de los recursos de las pginas web, haciendo ms eficaz el consumo de
tiempo en el diseo del sitio web y permitiendo a los programadores novatos adquirir
ms experiencia.

Aplicacin en mbitos concretos


Adems de su aplicacin directa en la construccin de software en general, y derivado
precisamente del gran xito que han tenido, los patrones de diseo han sido aplicados a
mltiples mbitos concretos producindose "lenguajes de patrones" y extensos
"catlogos" de la mano de diversos autores.
En particular son notorios los esfuerzos en los siguientes mbitos:

Patrones de interfaces de usuario, esto es, aquellos que intentan definir las
mejores formas de construir interfaces hombre-mquina (vase Interaccin
persona-computador, Interfaz grfica de usuario).

Patrones para la construccin de sistemas empresariales, en donde se requieren


especiales esfuerzos en infraestructuras de software y un nivel de abstraccin
importante para maximizar factores como la escalabilidad o el mantenimiento
del sistema.

Patrones para la integracin de sistemas (vase Integracin de aplicaciones


empresariales), es decir, para la intercomunicacin y coordinacin de sistemas
heterogneos.

Patrones de flujos de trabajo, esto es para la definicin, construccin e


integracin de sistemas abstractos de gestin de flujos de trabajo y procesos con
sistemas empresariales. Vase tambin BPM.

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