關於Decorator模式的幾點想法

rypan發表於2003-09-15
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();

相關文章