Python3 設計模式 工廠模式

2021-07-31 11:55:02 字數 2286 閱讀 5554

本文由 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 ...