proyecto

Page 65

65

Programación Orientada a Aspectos. Una experiencia práctica con AspectJ

: TPV

: FactoriaServicios

: Cajero

crea() ..... adaptadorContabilidad := new FactoriaServicios().getAdaptadorContabilidad()

adaptadorInventario := new FactoriaServicios().getAdaptadorInventario()

Figura 17: Uso de la factoría de servicios (AspectJ)

Las ventajas a la hora de implementar el patrón Singleton con AspectJ frente a la implementación tradicional en Java son:

El código relativo al patrón queda totalmente encapsulado en los aspectos SingletonProtocol y SingletonInstance, lo que significa que no hemos tenido que modificar el código fuente de la clase FactoriaServicios para convertirla en una clase Singleton. En la implementación tradicional si que teníamos que modificar la clase FactoriaServicios para ocultar su constructor y crear el método estático que devolvía la única instancia de la clase.

El funcionamiento del patrón Singleton es totalmente transparente al cliente de la clase FactoriaServicios, ya que no tenemos que utilizar un método especial (getInstancia()) para poder acceder a la única instancia de la clase, si no que seguimos usando la construcción new() como si se tratara de una clase normal.

Para que la clase FactoriaServicios deje de ser Singleton basta con eliminar el subaspecto SingletonInstance del proceso de entretejido, no tendríamos que modificar la clase como ocurriría con la implementación tradicional. Se puede decir que ahora el patrón es (des)conectable.

El código a escribir para implementar el patrón es mucho menor (subaspecto SingletonInstance). Recordar que el aspecto SingletonProtocol pertenece

a una librería de patrones implementados en AspectJ [22], y no es escrito por nosotros.

4.2.3. Políticas de descuento (Patrones Estrategia y Composite) Vamos a atacar otro problema de diseño descrito en [28]: las políticas de descuento. El sistema TPV debería disponer de una serie de políticas para fijar los precios que podrán ir cambiando de unas ventas a otras dependiendo de diversos factores. Esta situación motiva la utilización del patrón Estrategia (Strategy) [21] cuyo propósito es definir una familia de algoritmos, encapsular cada uno de ellos y hacerlos intercambiables. Si además es posible la aplicación simultánea de varias políticas de


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.