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

您的位置:首頁技術(shù)文章
文章詳情頁

淺析Python 抽象工廠模式的優(yōu)缺點(diǎn)

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

前言

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

抽象工廠意圖

提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需制定它們具體的累。

別名

Kit

案例

第三階段

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

第三階段 UML 圖

讓我們借助 UML 圖直觀了解一下這個(gè)時(shí)候工廠的樣子

淺析Python 抽象工廠模式的優(yōu)缺點(diǎn)

第三階段代碼

通過代碼去實(shí)現(xiàn)這個(gè)邏輯

from abc import ABC, abstractmethod# 抽象手機(jī) 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')# 抽象手機(jī)配件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())

看一下運(yùn)行結(jié)果:

make xiaomi mobilemake xiaomi othersmake apple mobilemake apple others

總結(jié)

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

抽象工廠的優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

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

缺點(diǎn)

由于采用該模式需要向應(yīng)用中引入眾多接口和類, 代碼可能會(huì)比之前更加復(fù)雜,即產(chǎn)品族擴(kuò)展非常困難

以上就是淺析Python 抽象工廠模式的優(yōu)缺點(diǎn)的詳細(xì)內(nèi)容,更多關(guān)于Python 抽象工廠模式的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 久热在线视频 | 久久久动漫 | 日韩网站免费观看高清 | 91看片看淫黄大片 | 日韩免费一二三区 | 欧美精品第二页 | 五月天色网站 | 一区二区视频在线免费观看 | 国产精品久久久久久久久免费看 | 人妖和人妖互交性xxxx视频 | 三级精品视频 | 欧美日韩在线中文字幕 | 素人fc2av清纯18岁 | 亚洲免费福利 | 岛国精品在线观看 | 中文字幕第二区 | 天堂网亚洲 | 99色在线| 亚洲影院在线 | 亚洲视频欧洲视频 | 国产一级片在线 | 国产一级自拍 | 伊人久久精品一区二区三区 | 老司机午夜影院 | 天堂av免费 | 亚洲精品免费在线观看 | 亚洲一区在线看 | 国产日韩在线观看视频 | 国产又粗又长又黄视频 | 国产成人精品视频免费 | 九九九在线 | 国产精品77 | 国产精品三级视频 | 国产怡春院 | 岛国av网| 精品久久久久久久久久 | 国产综合网站 | 日韩久久久久久久久久久 | 欧美视频第一页 | 国产www在线 | 成人深夜视频 |