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

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

淺析Python 簡單工廠模式和工廠方法模式的優缺點

瀏覽:3日期:2022-07-17 16:38:55

前言

在《設計模式》一書中工廠模式提到了:

工廠方法模式(Factory Method) 抽象工廠模式 (Abstract Factory)

但是在實際過程中還有一種工廠模式經常被使用,那就是 簡單工廠模式(Simple Factory)。有一種常見的分類的方法:根據產品是由具體產品還是具體工廠可以分為 工廠方法模式 和 簡單工廠模式;根據工廠的抽象程度可以分為 工廠方法模式 和 抽象工廠模式。接下來會通過例子對比簡單工廠模式和工廠方法模式。

工廠意圖

定義一個用于創建對象的接口,讓子類決定實例化哪一個類。Factory Method 使一個類的實例化延遲到其子類。

別名

虛構造器(Virtual Constructor)

案例

第一階段

小李開了一個代工廠,專門幫各大廠商生產手機,一開始只有小米找他生產小米手機(MiPhone),后來質量過硬,聲名遠播,蘋果公司也找上門了,準備讓他生產蘋果手機,生意來了,小李小手一揮,停工幾個月,加了一個生產線專門生成蘋果手機(Iphone)。于是乎,現在一個工廠有兩個生產線。

第一階段 UML 圖

讓我們借助 UML 圖直觀了解一下工廠現在的樣子。

淺析Python 簡單工廠模式和工廠方法模式的優缺點

第一階段代碼

通過代碼去實現這個邏輯

from abc import ABC, abstractmethod# 手機class Phone(ABC): @abstractmethod def make(self): pass# 蘋果手機class Apple(Phone): def make(self): print('make apple')# 小米手機class XiaoMi(Phone): def make(self): print('make xiaomi')class Factory: def product_phone(self, mobile_type): if mobile_type == ’apple’: return Apple() else: return XiaoMi()if __name__ == ’__main__’: factory = Factory() factory.product_phone(’apple’).make() factory.product_phone(’xiaomi’).make()

看一下運行結果:

make applemake xiaomi

第二階段

隨著第一階段的訂單完成,現在越來越多的手機廠商來找小李來生產手機,問題來了,生產線改造需要導致整個工廠停工一段時間,每次停工對工廠來說都是巨大的損失。那么該怎么解決問題呢?一個工廠似乎不夠用了,那么該怎么解決呢? 把所有的生產線獨立出來到單獨的工廠,這樣子需要生產新的手機只需要新增新的工廠就好了,不會影響其他的手機的生產。

第二階段 UML 圖

同樣讓我們借助 UML 圖了解一下這個階段工廠的樣子吧。

淺析Python 簡單工廠模式和工廠方法模式的優缺點

第二階段代碼

同樣讓我們借助代碼去實現這一階段的邏輯

from abc import ABC, abstractmethod# 抽象工廠class AbastractFactory(ABC): @abstractmethod def product_phone(self): pass# 蘋果工廠class AppleFactory(AbastractFactory): def product_phone(self): return Apple().make()# 小米工廠class XiaomiFactory(AbastractFactory): def product_phone(self): return XiaoMi().make() # 生產線class Phone(ABC): @abstractmethod def make(self): pass# 蘋果生產線class Apple(Phone): def make(self): print('make apple')# 小米生產線class XiaoMi(Phone): def make(self): print('make xiaomi')def client_product(factory:AbastractFactory): return factoryif __name__ == ’__main__’: xiaomi = client_product(XiaomiFactory()) xiaomi.product_phone() apple = client_product(AppleFactory()) apple.product_phone()

看一下運行結果:

make xiaomimake apple

總結

上面的案例中的倆個階段分別對應了兩個設計模式,分別是:**簡單工廠模式 **和 工廠方法模式。通過案例和對比,我們不難發現它們的的優缺點。

簡單工廠模式優缺點

優點:客戶端與產品的創建分離,客戶端不需要知道產品創建的邏輯,只需要消費該產品即可。 缺點:工廠類集成了所有產品的創建邏輯,當工廠類出現問題,所有產品都會出現問題;還有當新增加產品都會修改工廠類,違背開閉原則

工廠方法模式優缺點

優點:更符合開閉原則,增加一個產品類,則只需要實現其他具體的產品類和具體的工廠類即可;符合單一職責原則,每個工廠只負責生產對應的產品 缺點:增加一個產品,就需要實現對應的具體工廠類和具體產品類;每個產品需要有對應的具體工廠和具體產品類

以上就是淺析Python 簡單工廠模式和工廠方法模式的優缺點的詳細內容,更多關于Python 工廠模式的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 久久精品亚洲一区二区 | 黄色三级三级三级 | 亚洲成人免费在线 | 日韩欧美一区二区三区中文精品 | 久久久国产这里有的是精品 | 日本韩国中文字幕 | 久久精品国产亚洲麻豆 | 国产成年女人免费视频播放a | 玖玖爱在线观看 在线播放 玖玖草在线观看 | 日本高清不卡中文字幕 | 一级做a爰片久久毛片 | 在线观看国产一区二区三区 | 911亚洲精品 | 中文字幕在线综合 | 亚洲国产精品线观看不卡 | 国产一区二区亚洲精品 | 日韩精品一二三区 | 欧美日韩一区二区三区视视频 | 亚洲视频国产精品 | 乱人xxx国语对白91 | 韩国主播vip福利视频在线播放 | 国产真实搭讪系列 | 黄色自拍网站 | 一级黄色片网站 | 成人免费aa在线观看 | 国产一级毛片大陆 | 一级生性活免费视频 | 亚洲精品国产综合久久一线 | 96免费精品视频在线 | 亚洲精品aⅴ一区二区三区 亚洲精品aⅴ中文字幕乱码 | 深夜你懂的在线网址入口 | 国产精品自产拍在线观看 | 91精品在线免费观看 | 97r久久精品国产99国产精 | 黄色网址免费看 | 国产亚洲欧美视频 | 久久综合色综合 | 国产精品入口麻豆高清在线 | 亚洲20p| 永久精品免费影院在线观看网站 | 久久不射视频 |