日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式——工厂方法模式和抽象工厂模式

發(fā)布時(shí)間:2025/4/16 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式——工厂方法模式和抽象工厂模式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

為什么使用工廠方法?

Duck duck=new MallardDuck(); //使用接口讓代碼更具有彈性 //但是還是建立了具體類的實(shí)例

在有一群相關(guān)類時(shí),當(dāng)場會寫出這樣的代碼

Duck duck;if(picnic){duck=new MallarDuck(); } if(hunting){duck=new DecoyDuck(); } else if(inBathTub){duck=new RubberDuck(); }

在很多情況下,我們究竟要實(shí)例化哪個(gè)具體類,要在運(yùn)行時(shí)有一些條件來決定。當(dāng)看到這樣的代碼,一旦有變化或者擴(kuò)展,就必須重新打開這段代碼進(jìn)行檢查修改。通常這樣修改過的代碼將早場部分系統(tǒng)更難維護(hù)和更新,而且也更容易犯錯(cuò)。

直接使用new不符合“對修改關(guān)閉”的原則,我們應(yīng)該依據(jù)“找出會變化的原則,把它們從不變的部分分離出來”的原則寫代碼。

解決方案:

什么是工廠方法?

工廠方法模式:定義了一個(gè)創(chuàng)建對象的接口,但由子類決定要實(shí)例化的類是哪一個(gè)。工廠方法讓類把實(shí)例化推遲到子類。

抽象工廠模式:提供一個(gè)接口,用于創(chuàng)建相關(guān)或依賴對象的家族,而不需要明確指定特定類。

?

原則:依賴抽象,不要依賴具體類。

目的:為了得到更松的耦合,更有彈性的設(shè)計(jì)。

?

簡單的理解:

實(shí)例 -> 類 -> 類工廠

實(shí)例 -> 類 -> 類工廠 -> 抽象工廠

?

工廠方法是個(gè)方法,是在提供的抽象接口中,用來創(chuàng)建“一個(gè)產(chǎn)品”的方法。

createPizza();

然后具體子類,通過實(shí)現(xiàn)此接口來實(shí)現(xiàn)這個(gè)createPizze()的具體方法。

抽象工廠是個(gè)接口,在接口中,創(chuàng)建“很多產(chǎn)品”(或者說一個(gè)產(chǎn)品家族,因?yàn)楫a(chǎn)品之間有一定的聯(lián)系)。

createDough(); createSauce(); createCheese(); //多個(gè)產(chǎn)品,但是相互之間有聯(lián)系,都是一種披薩的配料

然后具體子類,通過實(shí)現(xiàn)此接口來實(shí)現(xiàn)創(chuàng)建這個(gè)產(chǎn)品家族,而其中每一個(gè)create方法,都可以使用工廠方法來實(shí)現(xiàn)。

可以說抽象工廠的實(shí)現(xiàn)中,運(yùn)用到了工廠方法。

換句話說:抽象工廠的任務(wù)是定義一個(gè)負(fù)責(zé)創(chuàng)建一組產(chǎn)品的接口,這個(gè)接口內(nèi)的每一個(gè)方法都負(fù)責(zé)創(chuàng)建一個(gè)具體產(chǎn)品,同時(shí)我們利用實(shí)現(xiàn)抽象工廠的子類來提供這些具體的算法。所以,在抽象工廠中利用工廠方法實(shí)現(xiàn)生產(chǎn)方法是相當(dāng)自然的做法。

?

轉(zhuǎn)載于:https://my.oschina.net/u/3786691/blog/1808100

總結(jié)

以上是生活随笔為你收集整理的设计模式——工厂方法模式和抽象工厂模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。