午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

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

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

瀏覽:22日期: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 編程
相關文章:
主站蜘蛛池模板: 国产亚洲三级 | 一本色道久久综合亚洲二区三区 | 91狠狠| 成人在线一区二区 | 看一级黄色 | 五月激情在线 | 免费一级大片 | 欧美在线一级 | 2019亚洲男人天堂 | 国产视频在线观看免费 | 艳母动漫在线观看 | 激情综合五月 | 日韩午夜在线视频 | 色婷婷丁香| 在线aaa | 狠狠操在线观看 | 国产视频一二三 | 国产三级av在线播放 | 国产美女永久免费无遮挡 | 2018天天操 | 欧美日韩在线视频观看 | 青青青草视频在线 | 久久久成人精品视频 | 日韩蜜桃视频 | 四色永久访问 | 国产亚洲精品久久久久久 | 国产黄色免费观看 | av男人天堂网| 日韩免费黄色片 | 国产精品乱 | 国产精品一区二区三区在线播放 | 日本我不卡 | 日本男人天堂 | 欧美日韩三级 | 91久久精品一区二区三 | 天天操夜夜欢 | 国产97在线观看 | 麻豆av在线播放 | 国产黄色片在线播放 | 亚洲婷婷网 | a毛片在线免费观看 |