Patrones de Diseño de Interfaz

     Los patrones de diseño ayudan a desarrollar con mayor velocidad, debido a que no es necesario pensar detalladamente sobre cómo resolver un asunto específico. Así mismo el uso de estos patrones, nos proporciona la facilidad de prevenir problemas y mejorar la legibilidad y claridad del código debido a que otros ingenieros de software entenderían la lógica utilizada de los patrones de diseño, porque su documentación está en todas partes.       Así mismo es importante resaltar que los patrones de diseño nos proporcionan soluciones  generales, las cuales no están atadas a un tipo específico de problema. (SourceMaking).          Por otra parte, se puede visualizar a los patrones de diseño como una solución a un problema en un contexto, en donde destacan tres aspectos: el contexto, en el cual el patrón es utilizado; el problema que se está intentando solventar; y por último la solución que trata de aplicar una solución para alcanzar los objetivos. (Freeman, Freeman, Bates, Sierra , pag.594, 2004) 
  Los patrones de diseño han sido integrados en frameworks como .NET, los desarrolladores utilizan las clases de las librerías de este framework, a veces sin darse cuenta que muchas de esas clases utilizan patrones de diseño, algunos de los patrones de diseño mencionados son el Observer, Iterator, Composite, Decorator, Factory Method, Adapter, Strategy. (Pierry, 2005) Por lo que se toma como base la lista anterior para enfocar algunos patrones de diseño que pueden ser considerados como los más utilizados en la industria.
    Es importante tomar en cuenta que existen patrones de diseño enfocados a distintos campos, como los siguientes:
● Patrones de diseño estructurales
● Patrones de diseño de comportamiento
● Patrones de diseño de creacionales
·         Singleton: Se trata de una clase que tan solo se puede instanciar una única vez, las siguientes veces que se instancia, siempre obtendremos el objeto que hemos instanciado la primera vez.
·         Factory: Se trata de una clase, que pasándole el tipo de objeto que queremos instanciar, nos devuelve ese tipo en concreto.
·         Abstract Factory: Parecido a la anterior, pero es capaz de trabajar con clases de diferente diseño, a partir de interfaces.
·         Builder: Este patrón, nos ayuda a instanciar objetos complejos, cuyo constructor o instancia inicial sería muy engorrosa para el programador.
·         Prototype: Crea objetos en clonando una instancia determinada de una clase.
·         Modelo vista controlador: Intenta dividir el acceso a datos, del control de datos y de la vista o presentación de datos (explicado en el podcast 19).
     Así mismo,los patrones de diseño son unas técnicas para resolver problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Objetivos de los Patrones de Diseño
Los patrones de diseño pretenden:
·         Proporcionar catálogos de elementos reusables en el diseño de sistemas software.
·         Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente.
·         Formalizar un vocabulario común entre diseñadores.
·         Estandarizar el modo en que se realiza el diseño.
·         Facilitar el aprendizaje de las nuevas generaciones de diseñadores condensando conocimiento ya existente.
Asimismo, no pretenden:
·         Imponer ciertas alternativas de diseño frente a otras.
·         Eliminar la creatividad inherente al proceso de diseño.
No es obligatorio utilizar los patrones, solo es aconsejable en el caso de tener el mismo problema o similar que soluciona el patrón, 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".

Categorías de patrones
Según la escala o nivel de abstracción:
·         Patrones de arquitectura: Aquellos que expresan un esquema organizativo estructural fundamental para sistemas de software.
·         Patrones de diseño: Aquellos que expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software.
·         Dialectos: Patrones de bajo nivel específicos para un lenguaje de programación o entorno concreto.
     Además, también es importante reseñar el concepto de "antipatrón de diseño", que con forma semejante a la de un patrón, intenta prevenir contra errores comunes de diseño en el software. La idea de los antipatrones es dar a conocer los problemas que acarrean ciertos diseños muy frecuentes, para intentar evitar que diferentes sistemas acaben una y otra vez en el mismo callejón sin salida por haber cometido los mismos errores.


Comentarios