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();
|
|