本文由 luzhuo 編寫,**請保留該資訊.
原文:
以下**以python3.6.1為例less is more!
工廠模式屬於建立類的模式
工廠模式分為: 工廠方法設計模式 / 抽象工廠設計模式
# coding=utf-8
# factory.py 工廠方法設計模式
# 根據傳入引數的不同, 而返回對應的物件
# 案例:你去一家餐廳,給廚子'番茄'和'雞蛋',廚子返回給你'番茄炒雞蛋';給廚子'白糖'和'黃瓜',廚子返回給你'白糖拌黃瓜'
class
tomatoesandegg:
def__init__
(self):
self.data = "男士喜歡吃番茄炒蛋"
defgetdata
(self):
return self.data
class
sugarandcucumber:
def__init__
(self):
self.data = 123456
defgetdata
(self):
return self.data
# 工廠方法: 根據傳入引數的不同, 而返回對應的物件
defcook_factory
(***):
if *** == "man":
food = tomatoesandegg
elif *** == "woman":
food = sugarandcucumber
else:
raise valueerror("請出入正確的性別: {}".format(***))
return food()
if __name__ == "__main__":
man = cook_factory("man")
woman = cook_factory("woman")
data_man = man.getdata() # 返回string型別資料
data_woman = woman.getdata() # 返回int型別資料
# getdata()返回不同型別的資料, 這在實際開發中是很常見的
print(data_man) # => 男士喜歡吃番茄炒蛋
print(data_woman) # => 123456
# coding=utf-8
# factory_abstract 抽象工廠設計模式
# 抽象工廠, 有一組工廠方法, 每個工廠方法生產對應的物件
# 案例:你去一家餐廳吃飯, 廚子負責做'番茄炒蛋'和'白糖拌黃瓜'
class
tomatoesandegg:
def__init__
(self):
self.data = "番茄炒蛋"
defgetdata
(self):
return self.data
class
sugarandcucumber:
def__init__
(self):
self.data = "白糖拌黃瓜"
defgetdata
(self):
return self.data
# 廚子
# 抽象工廠(可以有多個), 有一組工廠方法, 每個工廠方法生產對應的物件
class
cookfactory:
# 生產'番茄炒蛋'的工廠方法
defcook_te
(self):
return tomatoesandegg()
# 生產'白糖拌黃瓜'的工廠方法
defcook_sc
(self):
return sugarandcucumber()
if __name__ == "__main__":
cook = cookfactory()
man = cook.cook_te()
woman = cook.cook_sc()
data_man = man.getdata()
data_woman = woman.getdata()
print(data_man) # => 番茄炒蛋
print(data_woman) # => 白糖拌黃瓜
設計模式(3) 工廠設計模式
1.概述 定義乙個用於建立物件的工廠介面,讓工廠子類決定將哪乙個產品類例項化。此模式讓乙個產品類的例項化延遲到工廠子類。2.實現 先定義乙個抽象產品類,包含產品類的公共 再定義乙個抽象工廠類,用乙個方法返回乙個具體的產品類 分別實現具體的產品類,和對應的具體工廠類 3.抽象產品類 internal ...
python設計模式 工廠模式
在學習工廠模式之前,我們必須要了解何為所謂的工廠模式 這篇部落格,我就利用乙個例子來一步步對工廠模式,進行概述 提到工廠模式,我們要有兩個事物,一是工廠,二是產品,具體工廠 產品是什麼型別的?這裡是抽象的,不具體的,需要具體的工廠 產品來繼承或實現其方法,才能稱為具體工廠 具體產品 接下來我定義1個...
Python設計模式 工廠模式
一 工程模式執行場景 若需要將物件的建立和使用解耦,工廠方法也能派上用場。工廠方法可以在必要時建立新的物件,從而提高效能和記憶體使用率。二 工廠模式案例import xml.etree.elementtree as etree import json class jsonconnector def ...