成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

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

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

瀏覽:4日期: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 編程
相關文章:
主站蜘蛛池模板: 国产成人教育视频在线观看 | 欧美成人亚洲国产精品 | 日韩一级 | 成人三级做爰在线观看男女 | 美女张开腿黄网站免费国产 | 一本三道a无线码一区v | 成人夜色香网站在线观看 | 国产午夜毛片v一区二区三区 | www.91久久 | 成人小视频免费 | 久热久操 | 99久久综合精品免费 | 免费国产一区二区在免费观看 | 亚洲欧美中文字幕在线网站 | 亚洲第一中文字幕 | 国产成人爱片免费观看视频 | 性欧美videofree中文字幕 | 国产人人插 | 大片毛片女女女女女女女 | 日本强不卡在线观看 | 男女国产视频 | 夜色邦合成福利网站 | 国产在线观看网址你懂得 | 亚洲国产高清在线精品一区 | 日本成a人片在线观看网址 日本成年人视频网站 | 亚洲精品久久久久影院 | 国产一级毛片亚洲久留木玲 | 鸥美毛片 | 亚洲免费一 | 久久久久久久久久久久久久久久久久 | 欧美大片欧美毛片大片 | 欧美一区中文字幕 | 99久久精品一区二区三区 | 日本在线看小视频网址 | 亚洲国产精品综合久久网络 | 国产一区二区三区不卡免费观看 | 亚洲精品视频免费在线观看 | 久久受www免费人成看片 | 伊人情人综合网 | 欧美精品午夜 | 国产一区二区三区免费在线观看 |