大话设计模式
字体: 16 + -

第209章

大b:“简化必须注意两点:1、一个装饰器类的接口必须与被装饰的类的接口相容。2、尽量保持component作为一个‘轻’类。component类的职责在于为各个具体装饰器类提供共同的接口,而不是存储数据,所以不要把太多的逻辑和状态放在component类里面。省略component接口,只有一个具体的concretecomponent类,则decorater经常作为concretecomponent的子类。”

//component.java构件类

publicabstractclasscomponent

{

publicabstractvoiddosomething();

}

//concretecomponent.java具体构件类

publicclassconcretecomponentextendscomponent

{

publicvoiddosomething()

{

//provideimplementationhere

}

}

//decorator.java装饰器抽象类

publicabstractclassdecoratorextendscomponent

{

protectedcomponentponent;

publicdecorator(componentponent)

{

this.orgponent=ponent;

}

publicvoiddosomething()

{

ponent.dosomething();

}

}

//concretedecorator.java具体装饰器类

publicclassconcretedecoratorextendsdecorator

{

publicconcretedecorator(componentponent)

{

super(ponent);

}

privatevoidaddedbehavior()

{

//someextrafunctionalitygoeshere

}

publicvoiddosomething()

{

ponent.dosomething();

addedbehavior();

}

}