在學習裝飾圖案我被困在鹼性疑問如下改編職系裝飾圖案,對象實例化
背景:http://www.newthinktank.com/2012/09/decorator-design-pattern-tutorial/
- 披薩 - >接口(PlainPizza & TopingDecorator(抽象類)實現它)
- TomatoSauce和奶酪延伸TopingDecorator
- ToppingDecorator有一個實例字段披薩
問題:代碼執行程序如何讀取以下代碼?我試圖回答它,請確認它是否正確。
- TomatoSauce構造函數創建其傳遞莫薩里拉乾酪目的是它的超級
- 其超強(即TopingDecorator)對象創建的Mozzarella對象(使用它的構造)通過PlainPizza對象作爲參數傳遞給它的超級。
- 只要實例化普通比薩餅對象,它就存儲在Mozzarella對象的比薩餅實例字段中。
- 然後這個莫扎里拉對象被存儲在TomatoSauce的實例字段中。現在,TomatoSauce對象的實例化已完成。
所以,番茄醬對象的超級包含馬蘇裏拉對象。而那個Mozzarella Object的超級對象包含PlainPizza對象。
Pizza basicPizza = new TomatoSauce(new Mozzarella(new PlainPizza()));
所以它不是從TomatoSauce的構造函數開始的?它從最內層的參數開始..這是Java中的規則? –
它首先解決最內部變量或方法或代碼。 –