在軟件開(kāi)發(fā)中,對(duì)象的創(chuàng)建是一個(gè)基礎(chǔ)且頻繁的操作。隨著項(xiàng)目規(guī)模的增長(zhǎng),直接使用 new 關(guān)鍵字實(shí)例化對(duì)象的方式可能導(dǎo)致代碼耦合度高、難以維護(hù)和擴(kuò)展。為了解決這一問(wèn)題,設(shè)計(jì)模式應(yīng)運(yùn)而生,而簡(jiǎn)單工廠模式(Simple Factory Pattern)作為創(chuàng)建型模式的入門(mén)基石,以其簡(jiǎn)潔直觀的特性,在眾多場(chǎng)景中發(fā)揮著重要作用。
簡(jiǎn)單工廠模式,又稱(chēng)靜態(tài)工廠方法模式,它提供一個(gè)專(zhuān)門(mén)的類(lèi)(通常稱(chēng)為工廠類(lèi))來(lái)負(fù)責(zé)創(chuàng)建其他類(lèi)的實(shí)例。客戶(hù)端不直接調(diào)用具體類(lèi)的構(gòu)造函數(shù),而是通過(guò)向工廠類(lèi)傳遞參數(shù),由工廠類(lèi)根據(jù)參數(shù)決定創(chuàng)建并返回哪一種產(chǎn)品類(lèi)的對(duì)象。其核心在于將對(duì)象的創(chuàng)建邏輯封裝起來(lái),使客戶(hù)端代碼與具體產(chǎn)品類(lèi)解耦。
簡(jiǎn)單工廠模式通常包含以下三個(gè)角色:
createProduct),根據(jù)傳入的參數(shù)或條件返回不同的產(chǎn)品對(duì)象。假設(shè)我們正在開(kāi)發(fā)一個(gè)圖形繪制程序,需要?jiǎng)?chuàng)建不同的形狀(如圓形、矩形、三角形)。不使用模式時(shí),客戶(hù)端代碼需要明確知道每個(gè)具體形狀類(lèi)的存在。而使用簡(jiǎn)單工廠模式后:
Shape 接口,包含 draw() 方法。Circle、Rectangle 類(lèi),實(shí)現(xiàn) Shape 接口。ShapeFactory,提供一個(gè)靜態(tài)方法 getShape(String type)。當(dāng)傳入?yún)?shù)為 “CIRCLE” 時(shí),返回 Circle 對(duì)象;為 “RECTANGLE” 時(shí),返回 Rectangle 對(duì)象。這樣,客戶(hù)端代碼只需調(diào)用 ShapeFactory.getShape("CIRCLE").draw() 即可,無(wú)需關(guān)心 Circle 是如何被實(shí)例化的。當(dāng)需要新增三角形時(shí),只需添加新的具體產(chǎn)品類(lèi)并在工廠方法中增加一個(gè)判斷分支,客戶(hù)端代碼基本無(wú)需改動(dòng)。
簡(jiǎn)單工廠模式適用于以下情況:
簡(jiǎn)單工廠模式是一種非常實(shí)用且易于理解的設(shè)計(jì)模式。它通過(guò)封裝對(duì)象的創(chuàng)建過(guò)程,有效降低了模塊間的耦合度,使代碼結(jié)構(gòu)更加清晰。其違背開(kāi)閉原則的缺陷也決定了它更適合于產(chǎn)品類(lèi)型穩(wěn)定、變化不頻繁的場(chǎng)景。在軟件開(kāi)發(fā)中,準(zhǔn)確識(shí)別場(chǎng)景需求,合理運(yùn)用簡(jiǎn)單工廠模式,可以顯著提升代碼的初始質(zhì)量,并為后續(xù)的架構(gòu)演進(jìn)鋪平道路。當(dāng)系統(tǒng)復(fù)雜度增加時(shí),應(yīng)及時(shí)考慮升級(jí)到工廠方法模式或抽象工廠模式,以獲得更好的擴(kuò)展性。
如若轉(zhuǎn)載,請(qǐng)注明出處:http://m.newvote.cn/product/67.html
更新時(shí)間:2026-06-07 09:39:17
PRODUCT