日韩三级国产精品-日韩三级黄频-日韩三级黄色片1-日韩三级片网页版-日韩三级片网址入口-日韩三级在线播放-日韩三级在线导航-日韩三级中文-日韩三区四区-日韩色吧AV

當(dāng)前位置: 首頁(yè) > 產(chǎn)品大全 > 探索設(shè)計(jì)模式之工廠模式 解耦與創(chuàng)造的藝術(shù)

探索設(shè)計(jì)模式之工廠模式 解耦與創(chuàng)造的藝術(shù)

探索設(shè)計(jì)模式之工廠模式 解耦與創(chuàng)造的藝術(shù)

在軟件開(kāi)發(fā)中,對(duì)象創(chuàng)建是一個(gè)基礎(chǔ)且頻繁的操作。當(dāng)對(duì)象的創(chuàng)建邏輯變得復(fù)雜、需要根據(jù)條件動(dòng)態(tài)創(chuàng)建,或者我們希望將創(chuàng)建過(guò)程與使用過(guò)程解耦時(shí),直接使用 new 關(guān)鍵字可能會(huì)帶來(lái)代碼的僵化、難以維護(hù)和擴(kuò)展。此時(shí),工廠模式(Factory Pattern)作為一種經(jīng)典的設(shè)計(jì)模式,便閃耀登場(chǎng),為我們提供了一種優(yōu)雅的解決方案。

一、工廠模式的核心思想

工廠模式屬于創(chuàng)建型設(shè)計(jì)模式。其核心思想是:定義一個(gè)用于創(chuàng)建對(duì)象的接口(或抽象類(lèi)),但將具體創(chuàng)建哪個(gè)類(lèi)實(shí)例的決定推遲到子類(lèi)(或具體工廠)中。這樣,客戶(hù)端代碼就不再需要直接關(guān)心具體對(duì)象的實(shí)例化細(xì)節(jié),只需與工廠接口和抽象產(chǎn)品交互,從而實(shí)現(xiàn)了創(chuàng)建邏輯與使用邏輯的解耦

簡(jiǎn)單來(lái)說(shuō),就是將 new 這個(gè)動(dòng)作封裝起來(lái),由一個(gè)專(zhuān)門(mén)的“工廠”來(lái)負(fù)責(zé)生產(chǎn)“產(chǎn)品”。

二、工廠模式的三種形態(tài)

工廠模式主要分為三種形態(tài):簡(jiǎn)單工廠模式、工廠方法模式和抽象工廠模式。它們層層遞進(jìn),應(yīng)對(duì)不同復(fù)雜度的場(chǎng)景。

1. 簡(jiǎn)單工廠模式(Simple Factory)

簡(jiǎn)單工廠模式并不屬于GoF的23種設(shè)計(jì)模式,但它是理解工廠模式的基礎(chǔ)。它通過(guò)一個(gè)單獨(dú)的工廠類(lèi),根據(jù)傳入的參數(shù),動(dòng)態(tài)決定創(chuàng)建哪一種產(chǎn)品類(lèi)的實(shí)例。

  • 結(jié)構(gòu):一個(gè)具體工廠類(lèi),一個(gè)抽象產(chǎn)品接口/父類(lèi),多個(gè)具體產(chǎn)品類(lèi)。
  • 優(yōu)點(diǎn):客戶(hù)端無(wú)需知道具體產(chǎn)品類(lèi)名,只需知道對(duì)應(yīng)參數(shù)。
  • 缺點(diǎn):工廠類(lèi)職責(zé)過(guò)重,一旦需要添加新產(chǎn)品,就必須修改工廠類(lèi)的邏輯(通常是增加 if-elseswitch 分支),這違反了“開(kāi)閉原則”。
  • 適用場(chǎng)景:工廠類(lèi)負(fù)責(zé)創(chuàng)建的對(duì)象較少,且客戶(hù)端不關(guān)心創(chuàng)建細(xì)節(jié)。

示例:一個(gè)圖形繪制程序,根據(jù)傳入的“圓形”、“矩形”等字符串,創(chuàng)建對(duì)應(yīng)的 CircleRectangle 對(duì)象。

2. 工廠方法模式(Factory Method)

這是工廠模式的標(biāo)準(zhǔn)形態(tài)。它定義了一個(gè)創(chuàng)建對(duì)象的抽象方法,由子類(lèi)決定實(shí)例化的具體類(lèi)。工廠方法模式將對(duì)象的實(shí)例化推遲到子類(lèi)。

  • 結(jié)構(gòu):一個(gè)抽象工廠類(lèi)(聲明工廠方法)、多個(gè)具體工廠類(lèi)(實(shí)現(xiàn)工廠方法)、一個(gè)抽象產(chǎn)品類(lèi)、多個(gè)具體產(chǎn)品類(lèi)。通常一個(gè)具體工廠只生產(chǎn)一種具體產(chǎn)品。
  • 優(yōu)點(diǎn):完全符合“開(kāi)閉原則”。當(dāng)需要增加新產(chǎn)品時(shí),只需新增對(duì)應(yīng)的具體工廠和具體產(chǎn)品類(lèi),無(wú)需修改現(xiàn)有工廠和客戶(hù)端代碼。
  • 缺點(diǎn):每增加一個(gè)產(chǎn)品,就需要增加一個(gè)具體工廠類(lèi),會(huì)導(dǎo)致類(lèi)的數(shù)量成對(duì)增加,增加系統(tǒng)復(fù)雜度。
  • 適用場(chǎng)景:客戶(hù)端不知道它所需要的對(duì)象的類(lèi),但希望由子類(lèi)來(lái)指定創(chuàng)建的對(duì)象。

示例:日志記錄器框架。定義 Logger 抽象產(chǎn)品和 LoggerFactory 抽象工廠。可以有 FileLoggerFactory 生產(chǎn) FileLoggerDatabaseLoggerFactory 生產(chǎn) DatabaseLogger。客戶(hù)端通過(guò) LoggerFactory 接口獲取日志器,不關(guān)心具體的實(shí)現(xiàn)。

3. 抽象工廠模式(Abstract Factory)

抽象工廠模式提供了一個(gè)創(chuàng)建一系列相關(guān)或相互依賴(lài)對(duì)象的接口,而無(wú)需指定它們具體的類(lèi)。它處理的是“產(chǎn)品族”的創(chuàng)建。

  • 結(jié)構(gòu):一個(gè)抽象工廠類(lèi)(聲明一系列創(chuàng)建產(chǎn)品的方法)、多個(gè)具體工廠類(lèi)(實(shí)現(xiàn)創(chuàng)建同一產(chǎn)品族中不同產(chǎn)品的方法)、多個(gè)抽象產(chǎn)品類(lèi)、多個(gè)具體產(chǎn)品類(lèi)(屬于同一產(chǎn)品族)。
  • 優(yōu)點(diǎn):保證客戶(hù)端始終使用同一個(gè)產(chǎn)品族中的對(duì)象。易于交換產(chǎn)品系列(只需更換具體工廠)。
  • 缺點(diǎn):難以支持新種類(lèi)的產(chǎn)品。如果需要在產(chǎn)品族中增加一個(gè)新產(chǎn)品(比如在GUI套件中增加一個(gè)新的控件),就需要修改抽象工廠及其所有子類(lèi),這違反了“開(kāi)閉原則”。
  • 適用場(chǎng)景:系統(tǒng)需要?jiǎng)?chuàng)建一系列相關(guān)的產(chǎn)品對(duì)象,且不希望這些產(chǎn)品與具體的創(chuàng)建過(guò)程緊密耦合。

示例:跨平臺(tái)GUI工具包。有 ButtonCheckbox 兩個(gè)抽象產(chǎn)品。WinFactory 能創(chuàng)建 WinButtonWinCheckboxMacFactory 能創(chuàng)建 MacButtonMacCheckbox。應(yīng)用程序只需綁定一個(gè)具體工廠(如 MacFactory),就能獲得風(fēng)格一致的一整套UI組件。

三、工廠模式的優(yōu)勢(shì)

  1. 解耦:將對(duì)象的創(chuàng)建與使用分離,客戶(hù)端代碼只依賴(lài)于抽象接口,降低了系統(tǒng)的耦合度。
  2. 封裝變化:創(chuàng)建對(duì)象的復(fù)雜邏輯被封裝在工廠內(nèi)部,當(dāng)創(chuàng)建邏輯發(fā)生變化時(shí),不會(huì)影響到客戶(hù)端。
  3. 提高可讀性與可維護(hù)性:客戶(hù)端代碼更加清晰,職責(zé)單一。
  4. 便于擴(kuò)展(尤其是工廠方法模式):符合開(kāi)閉原則,新增產(chǎn)品類(lèi)型時(shí)擴(kuò)展方便。
  5. 隱藏具體類(lèi):客戶(hù)端可能根本不知道具體創(chuàng)建的是哪個(gè)類(lèi)的實(shí)例。

四、實(shí)踐中的選擇

在實(shí)踐中,選擇哪種工廠模式取決于業(yè)務(wù)的復(fù)雜度:

  • 如果產(chǎn)品類(lèi)型固定且較少,創(chuàng)建邏輯簡(jiǎn)單,可以考慮簡(jiǎn)單工廠
  • 如果預(yù)計(jì)產(chǎn)品類(lèi)型會(huì)頻繁擴(kuò)展,且希望遵循開(kāi)閉原則,工廠方法是首選。
  • 如果系統(tǒng)需要生產(chǎn)一系列相關(guān)聯(lián)、配套使用的產(chǎn)品對(duì)象,抽象工廠模式則能大顯身手。

###

工廠模式不僅僅是“不要用 new”的教條,其背后蘊(yùn)含的是依賴(lài)倒置面向接口編程的深刻思想。它通過(guò)將具體類(lèi)的實(shí)例化延遲,賦予了程序更大的靈活性和可擴(kuò)展性,是構(gòu)建高內(nèi)聚、低耦合軟件系統(tǒng)的利器。理解并善用工廠模式,是邁向高級(jí)軟件工程師的重要一步。

如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.boyihao.cn/product/51.html

更新時(shí)間:2026-08-20 04:53:11

產(chǎn)品列表

PRODUCT

主站蜘蛛池模板: 成人国产高清无码 | 超碰福利国产 | 波多野吉衣合集 | 免费无毒久久网络 | 熟妇操撸| 欧美精品免费观看 | 91传媒在线| 黄色网址网站 | 国产九色在线播放 | 91高清 | 成人福利在线 | 美女被草网站 | 欧美精品日韩精品 | 日本免费黄色网址 | 窝窝午夜理论 | 久草福利免费在线 | 岛国无码在线 | 手机看片欧美日韩 | 欧美视频在线播放 | 丁香婷婷五月底 | 国产精品熟女 | 福利影院草莓 | 激情深爱乱伦 | 黄色人妖网址 | 亚洲福利插吧 | 污污草莓视频 | 日韩另类在线 | 精品免费国产视频 | 福利在线电影院 | 成年网址| 窝窝手机福利影院 | 欧美xx电影| 丁香五月开心七月 | A片无码国产| 五月亭亭之丁香 | 日本高清电影院 | 91中文在线字幕 | 午夜电影网 | 欧美在线成人 | 欧美亚洲三级 | 成人91视频 |