Flexibilidad y Patrones de Diseño con DART, Composite
lunes, 18 de febrero de 2013
Para el mundo de desarrollo de software siempre es relevante la utilidad propuesta por los patrones de diseño. Como ustedes saben, los patrones de diseño son la base de la búsqueda de soluciones a problemas comunes en el desarrollo de software. En esta oportunidad vamos a analizar uno de los patrones de diseño más utilizados, el patrón Composite y cómo podemos representar esta funcionalidad en DART.
Antes de comenzar voy a comentar muy rápidamente el objetivo del patrón composite, centrado principalmente en la problemática de composición recursiva y en el desarrollo de estructuras en forma de árbol, algo muy utilizado en el día a día del desarrollo de software.
Figura.1 Diagrama general del patrón de diseño Composite
En la Figura 1 podemos observar el diagrama UML estándar propuesto por el patrón Composite. Un Client genérico que utiliza un Component ligado por una relación de herencia a el Composite y el Leaf , finalmente la clave de utilizar una relación de agregación entre el Composite y el Component
Vamos a generar un nuevo proyecto y a representar cada una de las clases con sus correspondientes métodos en DART.
Como muestra la Figura 2 la implementación que nos propone DART es simple y flexible con la declaración del constructor y cada uno de los métodos necesarios derivados del patrón composite.
La utilidad de esta solución es de gran impacto en una gran cantidad de desarrollos, desde catálogos de compra, estructuras de producto segmentación por países y demás.
Prueba el código y aplica una solución común a tus desarrollos desde DART con una gran flexibilidad y estandarización.
Les dejo un vídeo de implementación:
Les dejo el código fuente de la solución:
Descargar
Antes de comenzar voy a comentar muy rápidamente el objetivo del patrón composite, centrado principalmente en la problemática de composición recursiva y en el desarrollo de estructuras en forma de árbol, algo muy utilizado en el día a día del desarrollo de software.
Figura.1 Diagrama general del patrón de diseño Composite
En la Figura 1 podemos observar el diagrama UML estándar propuesto por el patrón Composite. Un Client genérico que utiliza un Component ligado por una relación de herencia a el Composite y el Leaf , finalmente la clave de utilizar una relación de agregación entre el Composite y el Component
Vamos a generar un nuevo proyecto y a representar cada una de las clases con sus correspondientes métodos en DART.
La clase Component
Esta es una clase abstracta que contiene la firma de los 3 métodos importantes que implementará el Composite.- Add (Agregar)
- Remove (Eliminar)
- Display (Visualizar)
Figura.2 Clase component implementada
Como muestra la Figura 2 la implementación que nos propone DART es simple y flexible con la declaración del constructor y cada uno de los métodos necesarios derivados del patrón composite.
La clase Composite
Esta clase es crucial en el desarrollo de patrón, posee la para el ejemplo la colección interna _children que almacena la estructura compuesta. Además la implementación de cada uno los métodos de la clase Component que permiten interactuar con esta colección interna para lograr el objetivo del patrón de diseño.
Figura.3 Clase composite implementada
La clase Leaf
Esta clase es un elemento simple dentro de patrón, sólo vamos a incluir mensajes para cuando se quiera componer una hoja y respetar la regla de no componer esta estructura.
Figura.4 Clase leaf implementada
Algunos detalles importantes del Composite
Podemos observar algunos detalles extras sobre los métodos de la clase Composite en donde se muestra el interior de las operaciones que dan vida a la realización del patrón.
Figure.5 Detalle de métodos clase Composite
La utilidad de esta solución es de gran impacto en una gran cantidad de desarrollos, desde catálogos de compra, estructuras de producto segmentación por países y demás.
Prueba el código y aplica una solución común a tus desarrollos desde DART con una gran flexibilidad y estandarización.
Les dejo un vídeo de implementación:
Les dejo el código fuente de la solución:
Descargar
Nicolás es director de relaciones para desarrolladores en latinoamérica región sur para Google. El ha desarrollado comunidades académicas y de investigación en varios países de Latinoamérica sobre la plataforma de desarrollo web y mobile de Google. Además Nicolas es profesor universitario, donde trabaja fuertemente en arquitecturas de software, ambientes emergentes e innovación en modelos de ingeniería de software
|