裝飾者模式動態地將責任附加到對象上。若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。
裝飾者和被裝飾者有相同的超累類型。
可以用一個或多個裝飾者包裝一個對象。
既然裝飾者和被裝飾者對象有相同的超累類型,所以在任何需要原始對象(被包裝的)的場合,可以用裝飾過的對象代替它。
裝飾者可以委托被裝飾者的行為之前與或之後,加上自己的行為,以達到特定的目的。
對象可以在任何時候被裝飾,所以可以在運行時動態地、不限量地用你喜歡的裝飾者來裝飾對象。
購買咖啡時,可以在其中加入各種調料,例如:蒸奶(Steamed Milk),豆漿(Soy),摩卡(Mocha)或覆蓋奶泡。咖啡館會根據所加入的調料收取不同的費用。
解決方法:我們以飲料為主體,然後在運行時以調料來裝飾飲料。比方說顧客想要摩卡和奶泡深焙咖啡,那麼,要做的是:拿一個深焙咖啡(DarkRoast)對象,以摩卡(Mocha)對象裝飾它,以奶泡對象裝飾它,調用cZ喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vc3QoKbe9t6ijrLKi0sDAtc6vzdC9q7X3wc+1xLzbx66808nPyKWhozwvcD4KPGgxPlVNTMnovMajujwvaDE+CjxwPjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20140607/20140607090958269.jpg" alt="\">