Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
patrones Builder
-Decorator
PRESENTADO POR:
JULIO CESAR OROZCO
CRISTIAN MENESES
Tabla de contenido
Ventajas de la reutilizacin.
Patrn Builder.
Participantes.
Estructura.
Introduccin al diseo de
patrones.
Ventajas de la reutilizacin.
Se abrevia la programacin
Mejora la fiabilidad
Patrn Builder.
Participantes.
ESTRUCTURA:
Planteamiento de un problema
con la implementacin Builder.
Problema:
Diagrama de clase.
Decorator
Propsito
Decorator
Motivacin
Solucin:
Decorator
Estructura
VisualComponent
draw()
Ejemplo de
componente textual
con scroll y marco:
component
a:BorderDecorator
component
TextView
Decorator
draw()
draw()
b:ScrollDecorator
component.draw();
component
c:TextView
ScrollDecorator
BorderDecorator
- scrollPosition
- borderWidth
draw()
scrollTo()
draw()
drawBorder()
super.draw();
drawBorder();
Decorator
Aplicabilidad
Decorator
Estructura
Component
operation()
component
1
ConcreteComponent
Decorator
operation()
operation()
ConcreteDecoratorA
component.operation();
ConcreteDecoratorB
- addedState
operation()
operation()
addedBehaviour()
super.operation();
addedBehaviour();
Decorator
Participantes
Decorator
Colaboraciones
:Client
new ()
new (c)
c:ConcreteComponent
:ConcreteDecorator
operation()
operation()
addedBehaviour()
Decorator
Consecuencias
Decorator
Implementacin
:Decorator
strategy
:Strategy
strategy
:Strategy
component
:Decorator
component
:Component
Decorator
Cdigo de ejemplo
public interface VisualComponent { //
component public void draw();
}
{ // concrete component
public class TextView implements
VisualComponent public void draw () { ... }
}
public abstrac class Decorator implements VisualComponent { //
decorator protected VisualComponent _component;
public Decorator (VisualComponent vc) { _component = vc; }
public void draw () { _component.draw(); }
}
public class BorderDecorator extends Decorator { // concrete
decorator public BorderDecorator (VisualComponent vc)
{ super(vc); }
public void draw() {
super.draw();
drawBorder();
}
public void
drawBorder()
{ ... }
}
public class Test { //
client
public static void main
(String args[]) {
VisualComponent vc = new BorderDecorator(new TextView());
vc.draw();
}
}