2015-04-25 54 views
2

我正在讀頭第一個設計圖案書,裝飾者部分。我無法理解這本書的一部分:裝飾者圖案,頭先

「那豈不是容易的飲料的一些 客戶落得 一個裝飾是不是最外層 裝飾一樣,如果我有一個在DarkRoast與 摩卡,大豆和鞭子,這將很容易 編寫的代碼,以某種方式結束了 與大豆而不是鞭子, ,這意味着它不包括鞭子在 命令。

任何機構都可以幫助我理解本節的主要內容? 首先提到它的問題是什麼? 謝謝

+0

這真是一個糟糕的解釋。忽略它。裝飾者只是一個包裝 - 這就是它的一切。 – alfasin

回答

1

我想他們想指出的是,如果您不小心在哪裏以及如何創建裝飾物體,可以將參考文獻混淆。考慮一下第98頁的例子(2004年的第一版)。

Beverage beverage3 = new HouseBlend(); 
beverage3 = new Soy(beverage3); 
beverage3 = new Mocha(beverage3); 
beverage3 = new Whip(beverage3); 

如果你想在創作的這些步驟之間做些什麼,你可能會得到一個沒有鞭子的摩卡。

而且,就像他們在回答部分寫道:

然而,裝飾通常通過使用其他模式,比如工廠和Builder創建。

如果您自動創建對象,它可能會阻止您發生引用錯誤。

+1

你能舉個例子來說明「在兩者之間做什麼」意味着什麼? (第二版/ 10週年紀念版現在是第100頁的例子) – hamena314