色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

淺析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 編程
相關文章:
主站蜘蛛池模板: a毛片免费全部播放完整成 a毛片免费全部在线播放毛 | 成人国内精品久久久久影院 | 在线日本看片免费人成视久网 | 久青草视频在线 | 99这里只有精品66视频 | 中文字幕亚洲国产 | 99视频在线 | 欧美一级看片a免费观看 | 青青爽国产手机在线观看免费 | 国产三级a三级三级午夜 | 男人天堂视频在线 | 日韩中文字幕网 | 欧美在线二区 | 国产精品成人在线播放 | 欧美激情视频一级视频一级毛片 | 日韩中文字幕精品 | 久久久久免费精品视频 | 天天澡天天碰天天狠伊人五月 | 欧美一级毛片在线看视频 | 久久久久久久久久久视频国内精品视频 | 99精品免费 | 亚洲综合一区二区三区 | 国产精品免费一区二区三区四区 | 日韩中文字幕网站 | 亚洲一区二区三区不卡在线播放 | 一级毛片免费不卡 | 男人和女人搞黄 | 成人黄色三级 | 免费国产精品视频 | 日韩欧美特级毛片 | 国产欧美日韩图片一区二区 | 色www永久免费 | 最新国产午夜精品视频成人 | 国产精品亚洲专一区二区三区 | 欧美特黄一级片 | 久久国内精品自在自线软件 | 国产一级不卡毛片 | 欧美一区二区三区激情视频 | 国产精品久久久久久久久久免费 | 国产tv在线观看 | 午夜毛片免费观看视频 |