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

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

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

瀏覽:3日期: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 編程
相關文章:
主站蜘蛛池模板: 亚洲日本在线免费观看 | 亚洲精品国产精品一区二区 | 国产美女福利 | 国产综合在线观看视频 | 日本福利片 | 午夜网站在线观看 | 在线观看h片 | 一级片免费在线 | 亚洲乱人伦在线 | 首页国产精品萌社区 | 一级黄色片一级黄色片 | 国产美女亚洲精品久久久综合 | 欧美黄www免费 | 大学生一级特黄的免费大片视频 | 成人免费黄色片 | 欧美v亚洲v国产v | 男女性高爱潮免费网站 | 国产一区二区视频免费 | 国产精品视频播放 | 99精品国内不卡在线观看 | 欧美在线视频一区 | 日本伊人精品一区二区三区 | 欧美精品久久久久久久影视 | 国产一级特黄aaaa大片野外 | 欧美一级特黄高清免费 | 内地精品露脸自拍视频香蕉 | 日韩欧美在线一区二区三区 | 国产免费福利网站 | 国产婷婷综合丁香亚洲欧洲 | 亚洲 欧美 日韩 在线 香蕉 | 亚洲六区 | 自拍偷拍 欧美日韩 | 亚洲精品另类有吗中文字幕 | 亚洲天堂h | 91热这里只有精品 | 亚洲一区精品在线 | 亚洲黄视频在线观看 | 国产最新在线视频 | 一级v片 | 国产高清视频一区二区 | 伊人久久影院 |