Академический Документы
Профессиональный Документы
Культура Документы
Muestra las clases que aplican al patrn Decorador y las relaciones existentes entre ellas Descripcin de los elementos del diagrama: Component: es una clase abstracta que englobar cualquier elemento que puede ser decorado (en el ejemplo anterior, sera una clase AbstractVentana que incluira los mtodos que definien la interfaz para dibujar los elementos). ConcreteComponent: clase que hereda de Component y que define un elemento que puede ser decorado (la clase Component es abstracta, por lo que no puede instanciarse). Es clase implementar las operaciones de la clase Component dando una primera funcionalida base (en el ejemplo anterior, correspondera con la clase Ventana, y el mtodo dibujara una ventana bsica, sin bordes ni nada parecido). Decorator: es la clase base para cualquier decorador que vayamos a utilizar. Se trata de una clase abstracta que ser agregada (las clases que la hereden) a cada componente (en el ejemplo, sera una clase AbstractDecorator que no implementara los mtodos de la base, pero que tendra como atributo el componente al que se est aplicando (a nivel de instancia)). ConcreteDecorator: se trata de una clase que hereda de Decorator y que define una funcionalidad concreta a aadir al componente (en el ejemplo podra ser aadir un borde, un icono o un botn. Cada una de ellas sera una clase que deriva de Decorator y que puede asociarse a cualquier Ventana).
Un ejemplo prctico
Con tal de que el patrn quede claro, voy a mostrar un pequeo ejemplo de cdigo en el que utilizo este patrn. El ejemplo que voy a desarrollar se trata de elaborar iconos a los que se les pueda aadir otros iconos informando de detalles concretos (por ejemplo, en el sistema operativo Windows Vista, cuando una aplicacin requiere de aprobacin del Administrador, su icono
est decorado con otro pequeo icono en forma de escudo en los 4 colores del icono de windows). Viene a ser el mismo ejemplo. Queremos poder decorar ciertos iconos en funcin de las caractersticas que se apliquen a ese icono.
Esta clase se corresponde con la clase Component del diagrama de clases UML para el patrn Decorator. En segundo lugar, pasamos a crear la clase AbstractDecorator que ser la clase base para todos aquellos decoradores que puedan aplicarse a un icono (en realidad no es ms que otro icono que dibujaremos encima del original, en una posicin concreta).
Esta clase se corresponde con la clase Decorator del diagrama de clases UML del patrn Decorator. Ahora que ya hemos definido las clases base, podemos crear las clases que heredarn de estas y que sern las que nos proporcionarn toda la funcionalidad. Emepezaremos definiendo un decorador concreto:
Esta clase se corresponde con la clase ConcreteDecorator del diagrama de clases UML del patrn Decorator. Y ahora una clase que herede de la clase AbstractIcon y que admita decoradores:
Esta clase se corresponde con la clase ConcreteComponent del diagrama de clases UML para el patrn Decorator. Por ltimo os dejo el cdigo de un formulario Winform en el que se hace uso de todas estas clases para dibujar un icono al que, al pulsar un botn del formulario, se le aade un decorador.
Simplemente remarcar que, por el diseo que hemos realizado, un decorador puede contener otros decoradores, lo que nos proporciona un enorme abanico de posibilidades y combinaciones. Y eso es todo sobre este patrn. Como veis, en determinadas situaciones puede resultarnosde mucha utilidad, como todos los patrones de diseo. Como siempre, espero que este artculo os resulte til e interesante!