簡體中文 | 繁體中文

大話設計模式-----第155章


絕世護花高手 迷醉香 stop!公爵大人 公子天下 寄生 豪門重生:冰山總裁獨寵校花 金融太上皇 萬古絕仙 喜神 異界破爛王 極天至尊 潛龍天下 禽獸系列之玫瑰公爵 從超凡世界歸來 尋妖 長生途 無限復活 兵鋒王座 白鹿原 都市西遊成魔系統
第155章

小A:“什麼是‘開閉原則’?”

大B:“是指一個軟體實體應該對擴充套件開放,對修改關閉。也就是說軟體實體必須是在不被修改的情況下被擴充套件。模板方法模式意圖是由抽象父類控制頂級邏輯,並把基本操作的實現推遲到子類去實現,這是透過繼承的手段來達到物件的複用,同時也遵守了開閉原則。父類透過頂級邏輯,它透過定義並提供一個具體方法來實現,也稱之為模板方法。通常這個模板方法才是外部物件最關心的方法。在前面的訂單處理例子中,publicOrderplaceOrder(intcustomerId,ListorderItemList)這個方法才是外部物件最關心的方法。所以它必須是public的,才能被外部物件所呼叫。子類需要繼承父類去擴充套件父類的基本方法,但是它也可以覆寫父類的方法。如果子類去覆寫了父類的模板方法,從而改變了父類控制的頂級邏輯。這違反了‘開閉原則’。我們在使用模板方法模式時,應該總是保證子類有正確的邏輯。所以模板方法應該定義為final的。所以AbstractOrder類的模板方法placeOrder方法應該定義為final。”

程式碼:

publicfinalOrderplaceOrder(intcustomerId,ListorderItemList)

rendercode();

大B:“因為子類不能覆寫一個被定義為final的方法。從而保證了子類的邏輯永遠由父類所控制。模板方法模式中,抽象類的模板方法應該宣告為final的。”

推薦小說