S

Sihar

Usuario (Chile)

Primer post: 18 jun 2011Último post: 18 jun 2011
1
Posts
0
Puntos totales
0
Comentarios
P
Patrones de diseño
Apuntes Y MonografiasporAnónimo6/18/2011

PATRONES DE DISEÑO, LO QUE TODO PROGRAMADOR DEBE CONOCER!! RESUMEN A lo largo de este trabajo conoceremos los patrones de diseño, su nacimiento, evolución, aplicaciones, métodos de uso, etc. Nos daremos cuenta de cómo nace el concepto patrones de diseño, constataremos que no es originario de la computación sino de un mundo diferente que luego fue adaptado para el desarrollo de software. Conoceremos a la banda de los cuatro y explicare en detalle un patrón de diseño para que el lector pueda hacerse una idea bastante clara de lo que son, como se clasifican, como funcionan, e incluso veremos un par de ejemplos. Este paper pretende ser un primer acercamiento a un mundo que todo programador debe conocer. Invito al lector a leer este documento como base para luego investigar por su cuenta este mundo en el que hay mucho por conocer. INTRODUCCION ¿Qué son los patrones de diseño? Son soluciones simples y elegantes a problemas específicos y comunes del diseño orientado a objetos. Son soluciones basadas en la experiencia y que se ha demostrado que funcionan. Es decir, los patrones de diseño son códigos, que alguien (podemos ser nosotros mismos) ya hizo y que nosotros podemos reutilizar para un programa nuevo sin tener la necesidad de modificarlo, simplemente podemos volver a usarlo cuantas veces lo necesitemos durante nuestra vida de programadores. Los patrones de diseño más conocidos se encuentran compilados y clasificados según sus objetivos y beneficios en el libro de GoF : -Patrones creacionales -Patrones estructurales -Patrones de comportamiento En la actualidad existen otros patrones de diseño como Patrones de Interacción que buscan la reutilización de interfaces para hacer más eficaz el desarrollo y diseño web. En este trabajo describiremos tres patrones de diseño: -Factory Method (Creacional) -Flyweight (Estructural) -Strategy (de Comportamiento) Y profundizaremos en el patrón: -Strategy (estrategia) HISTORIA O ESTADO DEL ARTE El Ingles Christopher Alexander, de profesión arquitecto es el padre de los patrones de diseño en la construcción. El plantea que un problema que se repite en el tiempo tiene por consiguiente una respuesta que se repite de igual manera. Luego, 8 años después, en el año 1987 Ward Cunningham y Kent Beck (el primero creador del primer sitio wiki, y el segundo creador de los framework junto a Erich Gamma, ambos (Ward Cunningham y Kent Beck) contribuyentes en la práctica del desarrollo de la programación orientada a objetos (POO)) usaron las ideas de Alexander y desarrollaron 5 patrones de interacción hombre-ordenador (HCI) y publicaron el articulo Using Pattern Languages for OO Programs. Finalmente en los primeros años de la década de 1990 cuando se publica el libro “Design Patterns” escrito por el grupo GoF (Gang of Four) se recogieron 23 patrones de diseños y le dieron un gran éxito a estos en el mundo de la informática. Desde entonces los patrones de diseño se utilizan como esqueleto de soluciones en los problemas que aparecen en el largo camino en la construcción de software. El patrón Factory Method (método de fabricación). Es un conjunto de clases y subclases que permiten la construcción de objetos genéricos. Las clases principales son el “creador” (declara el método creador que devuelve un objeto de tipo producto, puede ser una clase abstracta) y el “producto” (define la interfaz de los objetos que genera el creador) El patrón Flyweight sirve para mejorar la flexibilidad y el rendimiento de los recursos eliminando la redundancia o el exceso de objetos. Mantiene una conexión con el patrón de diseño Strategy para aminorar la población de objetos. El patrón Strategy es el patrón que detallaremos en este paper, asi que pasamos a tratarlo en profundidad. NOMBRE DEL TEMA Para poder describir un patrón se utilizan plantillas, en este trabajo utilizaremos la plantilla usada por el GoF para definir los conceptos básicos del patrón Strategy y asi conocerlo en profundidad:  Nombre del patrón: Strategy (estrategia)  Clasificación del patrón: Patrón de diseño de comportamiento.  Intención: tener un grupo de clases que sean un conjunto de posibles soluciones o comportamientos, estos permiten la flexibilidad de los sistemas, intercambiando en la aplicación los algoritmos, modificando su comportamiento en cualquier momento.  También conocido como: “policy” (política)  Motivación: Estructurar una familia de algoritmos de modo que sus clientes puedan intercambiarlos en tiempo de ejecución.  Aplicabilidad: Usos comunes y criterios de aplicabilidad de este patrón:  Se necesitan variantes de un algoritmo y estas son implementadas como una jerarquía de clases.  Cuando se necesita configurar una clase con uno de muchos comportamientos, así varias clases pueden diferir solamente en su comportamiento.  Cuando queremos ocultar la complejidad de la estructura de datos  Estructura: Diagramas de clases para describir las que intervienen en el patrón: (Ver anexo 1)  Participantes:  Strategy (estrategia) aquí se declara la interfaz común para todos los algoritmos Context.  Context (contexto) aquí se crean, configuran y mantienen las referencias creadas en concretestrategy.  Concretestrategy (estrategia concreta) implementa el algoritmo o una variante del mismo usando Strategy.  Colaboraciones: Strategy y Context interactúan para implementar la estrategia concreta. Los clientes decide la estrategia a crear y pasan un objeto Concretestrategy al Context, entonces interactúan solo en este último.  Consecuencias:  Consecuencias positivas:  Facilita soportar varios comportamientos y su implementación;  Estructura el uso de implementaciones alternativas.  Consecuencias negativas:  Mayor número de objetos;  El cliente debe comprender las posibilidades de todas las estrategias ya que el debe crearlas.  Implementación: hay que analizar primero si es posible encapsular el comportamiento común a todas las estrategias en una superclase. También debemos saber que el cliente puede no crear un objeto cuando la estrategia solicitada sea idéntica a la última usada.  Código de ejemplo: (Ver anexo 2)  Usos conocidos: Ejemplos de sistemas reales que usan el patrón.  Método list de la clase file del java.io.  Patrones relacionados: Template Method. Flyweight. CONCLUSIONES El patrón Strategy (estrategia) permite tener varios métodos que “nos saquen de apuro”. Se podrán intercambiar las soluciones a diversos problemas de forma manual o automática para cada situación que se presente. Se utiliza mayormente en programas que ofrecen servicios o funciones determinadas, entonces se podrán manejar varias formas de resolver un problema, completar un servicio o de llevar a cabo la función para la que este programada. La estrategia a seguir puede ser intercambiada en cualquier momento, incluso en tiempo de ejecución. Me incline por este patrón en particular por su peculiar forma de trabajar, porque resulta sumamente útil tener varias alternativas de solución para un programa que presta servicios. Podría aplicarse en muchos ámbitos. A opinión personal considero que es uno de los patrones de diseño más útiles en la programación con orientación a clientes. BIBLIOGRAFÍA http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o http://mit.ocw.universia.net/6.170/6.170/f01/pdf/lecture-12.pdf http://www.ingenierosoftware.com/analisisydiseno/patrones-diseno.php http://www.ingenierosoftware.com/analisisydiseno/patrones-diseno.php http://msdn.microsoft.com/es-es/library/bb972240.aspx http://www.proactiva-calidad.com/java/patrones/index.html http://chuidiang.blogspot.com/2005/12/qu-son-los-patrones-de-diseo-el-patrn.html http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf http://patronesdediseno.blogspot.com/2009/05/patron-strategy.html http://www.ajlopez.net/ReferenciaVe.php?Id=1 ESTO ES SOLO UNA INTRODUCCION A UN TEMA MUY IMPORTANTE PARA TODOS LOS PROGRAMADORES, ES UN TRABAJO QUE HICE PARA LA UNIVERSIDAD Y QUIZE COMPARTIRLO CON TODA LA COMUNIDAD TARINGA!! ESPERO LES GUSTE

0
2
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.