关于Decorator模式的几点想法

03-09-15 rypan
1)Decorator的构造子应该有且只有一个Component类型的参数

2)Component强烈建议是接口而不是抽象类。这样做的好处是Decorator不会遗漏对Component接口的委派。如果必须是抽象类那一定要注意变量只能是private修饰符并且Decerator实现了所有非private函数的委派。这也符合代码朝上,状态朝下的设计原则。

参照《java与模式》中的发票例子:

Order so = new SaleOrder();

so.setCustomerName("aaa"); //!!!

Order so1 = new HeaderDecorator(so);

Order so2 = new FooterDecorator(so);

so.setCustomerName("bbb"); //!!!

//猜猜看,会打印出什么?

so1.print();

so2.print();

    

rypan
2003-09-16 00:15
感觉Decorator的实现类似Default Adapter。但不是对每个方法进行贫庸实现而是进行委派。

richardluopeng
2003-09-16 11:52
没有明白什么意思,是说Decorator的变量尽量 private吗???

rypan
2003-09-17 17:16
> 没有明白什么意思,是说Decorator的变量尽量

> private吗???

不是Decorator,而是Compenent(《java与模式》中的教法)或者叫Decoratoree。

猜你喜欢