日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

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

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

為什么使用工廠方法?

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

在有一群相關類時,當場會寫出這樣的代碼

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

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

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

解決方案:

什么是工廠方法?

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

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

?

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

目的:為了得到更松的耦合,更有彈性的設計。

?

簡單的理解:

實例 -> 類 -> 類工廠

實例 -> 類 -> 類工廠 -> 抽象工廠

?

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

createPizza();

然后具體子類,通過實現此接口來實現這個createPizze()的具體方法。

抽象工廠是個接口,在接口中,創(chuàng)建“很多產品”(或者說一個產品家族,因為產品之間有一定的聯系)。

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

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

可以說抽象工廠的實現中,運用到了工廠方法。

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

?

轉載于:https://my.oschina.net/u/3786691/blog/1808100

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。