【发布时间】:2009-06-11 08:26:46
【问题描述】:
我注意到,在所有说明装饰器模式的示例中,都有一个基类/接口和一个继承/实现它的装饰器类,之后,所有装饰类都扩展了装饰器类。大致如下:
界面窗口 > WindowDecorator > WindowDecorator > VerticalScrollBarDecorator
以上层次结构取自Wikipedia's Design Pattern Page。
问题是,我想装饰一些“操作”类,并具有以下层次结构:
根类是操作
装饰类可以是 Operation1、Operation2 等。
我会有一个构造函数在我的 Operation 类中使用一个 Operation 对象,如下所示:
public Operation(Operation op)
{
this.op = op;
}
一个执行操作的抽象方法(我们称之为 doOperation)和另一个调用“存储”对象的 doOperation 的方法,例如this(位于基类中):
public void executeOperation(some_args_here)
{
if(op != null)
op.doOperation(); // call stored object's doOperation first
doOperation(); //execute this operation
}
问题是,当我可以做 OperationDecorator 类在基类中可以做的所有事情时,我真的不认为需要 OperationDecorator 类。如果我这样使用装饰器模式,我是否滥用了它?我错过了它的一些功能吗?
【问题讨论】:
标签: java design-patterns decorator