Patrones de diseño

Standard

Resumen que he realizado para la materia de Tecnologia de las Comunicaciones Prof. Nicolas Enriquez

    • ¿Qué es?
    • Un patrón de diseño o un Design Pattern es una regla que explica la relación entre un problema, un contexto y una solución.
    • O en pocas palabras, una solución (testeada y probada) a determinado problema.
    • Un Pattern contiene:
  • Nombre
    • Un Pattern se transforma en una gran herramienta de comunicación con poder simplificativo.
  • Problema
    • Define el momento cuando se aplica el Pattern, cuando es relevante.
  • Solución
    • Contiene un template generico que componen el diseño, sus responsabilidades, relaciones y colaboraciones.
  • Consecuencias
    • Aqui se analiza el impacto de aplicar un Pattern en la solución.
    • ¿Que no es?
    • El Pattern, no es la solución directa, es sino el punto de partida para encontrar la solución. Al ser una herramienta no podrá reemplazar al diseñador, que es quien se encarga de manejarlo.
    • Un Pattern, no es instanciable y no depende de un solo dominio, es el bosquejo de una idea que ha servido ya en otras ocasiones para un problema símil presentado anteriormente.
    • Libreria, framework y Pattern
    • Libreria , conjunto de funciones llamadas desde afuera por un cliente, recibe el mensaje, lo ejecuta y le devuelve el control al cliente (su instanciación es sencilla)
    • Framework, no es una clase, es un conjunto de objetos que se relacionan para servir a un dominio especifico entre sí. La instanciación del framework será un poco más complicada, ya que requiere conocimiento previo del mismo.
    • Patterns, como ya lo había explicado, no es una solución única, sino un conjunto de soluciones de un problema ya resuelto, necesitan aplicarse a un contexto para poder ser puestos en práctica.
    • Damos Designs Patterns …
    • - Porque no solamente tiramos código sino que nos vamos una capa más arriba.
    • - Vamos un paso más adelante, y no se nos obliga a pensar específicamente en diseño, pudiendo así tener diseño más elegantes y también poder pensar en implementarle algo a futuro.
    • Para tener en cuenta
    • Su estudio es sencillo, lo complicado es el saber aplicarlo a un problema en específico brindándole flexibilidad y robustez al sistema; ya que estos son varios y el resultado de cada uno varía según su contexto. Si bien no contamos con ninguna herramienta que nos indique en qué casos aplicar cada uno, debemos tener en cuenta que:
    • -Cada Pattern se divide en tres secciones que explican su solución: Intent, Motivation y Aplicability; y nos ayudaran a comprender si la solución propuesta por el Pattern encaja con nuestro problema generico.
    • -Los Patterns se agrupan en tres categorías:
    • .Creacionales: abstraen el proceso de instanciación.
    • .Estructurales: generan estructuras entre clases y objetos. (Diagramas de clases-objetos)
    • .De comportamiento: asignan las responsabilidades entre los objetos y su comunicación entre si. (Diagramas de secuencia-colaboración)
    • “Un patrón de diseño sólo debe ser utilizado en casos donde la flexibilidad pague su costo, ya que también complicamos el diseño y/o bajamos la performance.

    • Su aplicación
    • En un principio, cabe hacer hincapié en que deben ser aplicados solo cuando es necesario por motivos ya tratados en el punto anterior y preferentemente utilizados en la fase de diseño, de ser necesario, con ayuda de algún experto.
    • Cuando nos encontramos con un Pattern no diseñado en la etapa de programación, debemos actualizar el diseño, donde conocemos la refactorización, una suerte de  mantenimiento-evolucion compuesta por dos fases:
    • 1ª Aceptar los requerimientos de los usuarios, expandiendo el software.
    • 2ªCuando el sistema se acomoda, tenemos como resultado un software lo suficientemente maleable como para volver a aceptar nuevos requerimientos.
    • Estructuras de patrones

    • Para describir un patrón se usan estructuras, de forma que se expresen uniformemente y puedan constituir efectivamente un medio de comunicación uniforme entre diseñadores.
  • Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad.
  • Clasificación del patrón: creacional, estructural o de comportamiento.
  • Intención
  • Motivación: Escenario de ejemplo para la aplicación del patrón.
  • Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.
  • Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.
  • Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.
  • Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.
  • Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.
  • Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.
  • Código de ejemplo: Código fuente ejemplo de implementación del patrón.
  • Usos conocidos: Ejemplos de sistemas reales que usan el patrón.
  • Patrones relacionados: Referencias cruzadas con otros patrones.
    • Aplicado a la práctica
    • Además de su aplicación directa en la construcción de software en general, los patrones de diseño han sido aplicados a múltiples ámbitos concretos,
  • Para interfaces de usuario, aquellos que intentan definir las mejores formas de construir interfaces hombre-máquina.
  • Patrones de flujos de trabajo, esto es para la definición, construcción e integración de sistemas abstractos de gestión de flujos de trabajo.
  • Para la construcción de sistemas empresariales, en donde se requieren especiales esfuerzos en infraestructuras de software y un nivel de abstracción importante para maximizar factores como la escalabilidad del sistema.

2 thoughts on “Patrones de diseño

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>