亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

淺析Python 抽象工廠模式的優缺點

瀏覽:2日期:2022-07-17 16:35:38

前言

接著上一篇的故事工廠模式繼續,手機要出廠,顯然光一個手機肯定是不行的,還需要包裝盒、充電器等等東西。我們按照上一篇提到的工廠模式,去建立新的工廠是一點都沒有問題的。但是思考一下這樣子做會帶來的問題,顯然工廠太多了,將包裝盒、充電器全部分散到各個工廠,組裝什么的也是一個大問題,那么有沒有更好的辦法呢?答案是肯定的,抽象工廠模式。

抽象工廠意圖

提供一個創建一系列相關或相互依賴對象的接口,而無需制定它們具體的累。

別名

Kit

案例

第三階段

光生產手機遠遠不夠,還需要生產其他配件,分散到新的工廠成本太高,也不利于維護,那就把一個類型的手機所需要的所有東西,都放到一個工廠完成,小米工廠生產小米手機以及小米手機配套的東西,蘋果手機生產蘋果手機以及蘋果手機配套的東西,客戶只需要關心要什么手機就行了。

第三階段 UML 圖

讓我們借助 UML 圖直觀了解一下這個時候工廠的樣子

淺析Python 抽象工廠模式的優缺點

第三階段代碼

通過代碼去實現這個邏輯

from abc import ABC, abstractmethod# 抽象手機 class AbstractMobile(ABC): @abstractmethod def make(self): passclass XiaoMiMobile(AbstractMobile): def make(self): print('make xiaomi mobile') class AppleMobile(AbstractMobile): def make(self): print('make apple mobile')# 抽象手機配件class AbstractOthers(ABC): @abstractmethod def make(self): passclass XiaoMiOthers(AbstractMobile): def make(self): print('make xiaomi others') class AppleOthers(AbstractMobile): def make(self): print('make apple others')# 抽象工廠class AbstractFactory(ABC): @abstractmethod def create_mobile(self) -> AbstractMobile: pass @abstractmethod def create_others(self) -> AbstractOthers: passclass XiaoMiFactory(AbstractFactory): def create_mobile(self) -> XiaoMiMobile: return XiaoMiMobile().make() def create_others(self) -> XiaoMiOthers: return XiaoMiOthers().make()class AppleFactory(AbstractFactory): def create_mobile(self) -> AppleMobile: return AppleMobile().make() def create_others(self) -> AppleOthers: return AppleOthers().make() def client(factory: AbstractFactory) -> None: product_mobile = factory.create_mobile() product_others = factory.create_others() if __name__ == '__main__': client(XiaoMiFactory()) client(AppleFactory())

看一下運行結果:

make xiaomi mobilemake xiaomi othersmake apple mobilemake apple others

總結

如果代碼需要與多個不同系列的相關產品交互, 但是由于無法提前獲取相關信息, 或者出于對未來擴展性的考慮, 你不希望代碼基于產品的具體類進行構建, 在這種情況下, 你可以使用抽象工廠。在設計良好的程序中, 每個類僅負責一件事。 如果一個類與多種類型產品交互, 就可以考慮將工廠方法抽取到獨立的工廠類或具備完整功能的抽象工廠類中。

抽象工廠的優缺點

優點

你可以確保同一工廠生成的產品相互匹配。 你可以避免客戶端和具體產品代碼的耦合。 單一職責原則。 你可以將產品生成代碼抽取到同一位置, 使得代碼易于維護。 開閉原則。 向應用程序中引入新產品變體時, 你無需修改客戶端代碼

缺點

由于采用該模式需要向應用中引入眾多接口和類, 代碼可能會比之前更加復雜,即產品族擴展非常困難

以上就是淺析Python 抽象工廠模式的優缺點的詳細內容,更多關于Python 抽象工廠模式的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 久久精品国产一区 | 久久精品免视着国产成人 | 国产一区二区免费播放 | 日韩成人国产精品视频 | 奇米影视久久777中文字幕 | 在线免费看影视网站入口 | 亚洲欧美一二三区 | 日本久久久久亚洲中字幕 | 特级全毛片| 日韩一级视频免费观看 | 国产伦码精品一区二区三区 | 岛国毛片一级一级特级毛片 | 国产日韩精品欧美一区视频 | 亚洲福利一区二区三区 | 傲视影院午夜毛片 | 一级日韩 | 国产精品久久久久久久久鸭 | 国产青草视频 | 免费国产h视频在线观看86 | 中文字幕日韩国产 | 最新91网址| 亚洲乱码国产乱码精品精98 | 欧美日韩在线精品一区二区三区 | 亚洲国产人久久久成人精品网站 | 在线欧美一区 | 91极品尤物| 干出白浆视频 | 国内偷自视频区视频综合 | 黄色福利在线观看 | 欧美日韩国产成人高清视频 | 在线a级| 美国一级毛片在线观看 | 免费成人午夜视频 | 国产精在线| 女人被两根一起进3p在线观看 | 亚洲精品小说一区二区三区 | 曰韩在线视频 | 老妇女毛片 | 午夜精品视频5000 | 成人亚州| 黄色三级国产 |