我能想到的一個(gè)例子是模板模式,它是一種執(zhí)行 IoC 的方式,也是 OCP 的一個(gè)例子。因?yàn)樵谀0迥J街?,我們定義了基本算法,它不能被子類更改,但可以覆蓋該算法的繼承步驟方法。所以將來如果我們想改變一個(gè)步驟的實(shí)現(xiàn),我們可以創(chuàng)建另一個(gè)子類并實(shí)現(xiàn)這些步驟。還有其他例子嗎?
1 回答

慕仙森
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
開閉原則建議您應(yīng)該更喜歡具有可擴(kuò)展行為的事物,這樣當(dāng)您需要它們做新事情時(shí)就不必修改它們的源代碼。
當(dāng)你做得對時(shí),控制反轉(zhuǎn)同時(shí)是提供這種可擴(kuò)展性的最簡單和最強(qiáng)大的方法。
這是最簡單的方法,因?yàn)楫?dāng)您為 IoC 定義可注入接口時(shí),您只捕獲了您的需求。配置可擴(kuò)展行為的其他方法要求您考慮消費(fèi)者可能想要的一切。
這是最強(qiáng)大的方式,因?yàn)榇a可以做任何事情,提供一個(gè) IoC 擴(kuò)展點(diǎn)可以讓消費(fèi)者做各種你想不到的事情,只要他們滿足你的接口定義的要求。同樣,這是因?yàn)樽⑷氲慕涌趦H捕獲您自己的需求。
因此,OCP 和 IoC 以一種非常簡單的方式相關(guān):OCP 是一個(gè)目標(biāo),而 IoC 是實(shí)現(xiàn)目標(biāo)的手段。
添加回答
舉報(bào)
0/150
提交
取消