在軟件開發(fā)中,設(shè)計(jì)模式是解決常見問題的可重用方案,它們提供了經(jīng)過驗(yàn)證的代碼結(jié)構(gòu)和設(shè)計(jì)思路。簡單工廠模式是創(chuàng)建型模式中最基礎(chǔ)的一種,廣泛應(yīng)用于對(duì)象創(chuàng)建的封裝與解耦。
一、簡單工廠模式的核心思想
簡單工廠模式通過一個(gè)工廠類來封裝對(duì)象的創(chuàng)建過程,客戶端無需關(guān)心具體對(duì)象的實(shí)例化細(xì)節(jié),只需傳入相應(yīng)的參數(shù)即可獲得所需的對(duì)象。這種模式將對(duì)象的創(chuàng)建與使用分離,符合面向?qū)ο笤O(shè)計(jì)中的“開閉原則”和“依賴倒置原則”。
二、模式結(jié)構(gòu)
- 抽象產(chǎn)品類:定義產(chǎn)品的公共接口或抽象類。
- 具體產(chǎn)品類:實(shí)現(xiàn)抽象產(chǎn)品類的具體子類。
- 工廠類:負(fù)責(zé)根據(jù)客戶端請(qǐng)求創(chuàng)建并返回具體產(chǎn)品對(duì)象。
三、實(shí)例說明
假設(shè)我們有一個(gè)圖形繪制系統(tǒng),需要支持圓形、矩形和三角形的繪制。我們可以定義一個(gè)抽象類Shape,并讓Circle、Rectangle和Triangle繼承它。工廠類ShapeFactory根據(jù)傳入的參數(shù)(如“circle”)返回對(duì)應(yīng)的圖形對(duì)象。這樣,當(dāng)需要新增圖形類型時(shí),只需擴(kuò)展具體產(chǎn)品類和修改工廠類,而客戶端代碼無需變動(dòng)。
四、優(yōu)點(diǎn)與局限性
優(yōu)點(diǎn):
- 客戶端與具體產(chǎn)品解耦,提高了代碼的靈活性和可維護(hù)性。
- 集中管理對(duì)象的創(chuàng)建,便于統(tǒng)一修改和控制。
局限性:
- 工廠類職責(zé)過重,違反“單一職責(zé)原則”當(dāng)產(chǎn)品種類過多時(shí)。
- 新增產(chǎn)品類型需要修改工廠類,可能違反“開閉原則”。
五、應(yīng)用場景
簡單工廠模式適用于以下情況:
- 客戶端不需要知道具體產(chǎn)品的類名,只需知道對(duì)應(yīng)的參數(shù)。
- 對(duì)象創(chuàng)建邏輯相對(duì)簡單,且產(chǎn)品類型不會(huì)頻繁變化。
- 需要統(tǒng)一管理對(duì)象的創(chuàng)建過程,例如在資源池或配置系統(tǒng)中。
簡單工廠模式是入門設(shè)計(jì)模式的理想選擇,它通過封裝變化點(diǎn)來提升代碼的可擴(kuò)展性。在復(fù)雜場景下,可以考慮使用工廠方法模式或抽象工廠模式以進(jìn)一步解耦。在后續(xù)文章中,我們將繼續(xù)探討其他常用設(shè)計(jì)模式。