Decorator Pattern

Das Decorator Pattern (siehe Design Pattern) wird verwendet, wenn Komponenten (Instanzen von Component) dynamisch um Funktionalität erweitert werden sollen. Diese zusätzliche Funktionalität wird in so genannten Decorators organisiert, die sich den Components zuordnen lassen.

public interface Component
{
  public void doSomething();
}

public interface Decorator extends Component
{
}

public abstract class ComponentImpl implements Component
{
  private final Set decorators;
  //
  public Component()
  {
    super();
    //
    decorators = new Set();
  }
  //
  public final void addDecorator(Decorator decorator)
  {
    decorators.add(decorator);
  }
  //
  public final void removeDecorator(Decorator decorator)
  {
    decorators.remove(decorator);
  }
  //
  public void doSomething()
  {
    Iterator iterator = decorators.iterator();
    //
    while (iterator.hasNext())
    {
      Decorator decorator = (Decorator) iterator.next();
      decorator.doSomething();
    }
  }
}