2016-09-26 199 views
0

我目前正在使用裝飾模式編寫一個程序。我試圖找出如何限制我可以添加到第一類的裝飾器的數量。如:裝飾模式裝飾器限制

Pizza plainPizza = new PlainPizza; 
Pizza sausage = new Sausage(plainPizza); 

我怎麼能這樣編碼,我可以限制在我添加的裝飾器的數量。比如,如果我嘗試添加這在以前的代碼的頂部:

Pizza pepperoni = new Pepperoni(sausage); 

我怎樣才能防止它允許添加/包辣?

我試圖使用拋出異常,但問題是,我的裝飾器調用它的超類,所以我無法在初始化實例變量之前測試!

+1

你不能。這是裝飾者模式的要點。 –

+0

聽起來更像裝飾者模式不適合你的用例。 –

+0

@XaverKapeller這是我的教授在實驗室裏做的。這是許多任務之一。不知道該怎麼做。我試圖拋出異常,但我不能,因爲在測試count之前我會調用super。 – Cole

回答

0

您可以使用Builder pattern創建一個構建器,該構建器將應用所需的所有類型的修飾器。如果嘗試添加比允許的更多的內容,Builder也可以在內部跟蹤您應用了多少個裝飾器並作出相應的反應。