python 設計模式之工廠類相關模式

2021-09-25 12:14:13 字數 3193 閱讀 4479

python 工廠類設計模式

例:麥當勞自助點餐臺一類的點餐系統。在觸控顯示屏上,有三類可以選擇的餐品:漢堡,小食,飲料。當我們選擇好自己的食物,支付完成,訂單就生成了。

1.漢堡以2種為例

class burger(object):

name = ""

price = 0.0

def getprice(self):

return self.price

def setprice(self, price):

self.price = price

def getname(self):

return self.name

class cheeseburger(burger):

def __init__(self):

self.name = "cheese burger"

self.price = 10.0

class spicychickenburger(burger):

def __init__(self):

self.name = "spicy chicken burger"

self.price = 15.0

2.小食

class snack(object):

name = ""

price = 0.0

type = 'snack'

def getprice(self):

return self.price

def setprice(self, price):

self.pirce = price

def getname(self):

return self.name

class chips(snack):

def __init__(self):

self.name = 'chips'

self.price = 6.0

class chickenwings(snack):

def __init__(self):

self.name = "chicken wings"

self.price = 12.0

3.飲料

class beverage(object):

name = ""

price = 0.0

type = "beverage"

def getprice(self):

return self.price

def setprice(self, price):

self.price = price

def getname(self):

return self.name

class coke(beverage):

def __init__(self):

self.name = 'coke'

self.price = 4.0

class milk(beverage):

def __init__(self):

self.name = 'milk'

self.price = 5.0

以上的burger, snack,beverage都可以認為是該快餐店的產品,由於只提供了抽象方法,我們把它們叫抽象產品類,而cheese burger登6個由抽象產品類衍生出的子類,叫作具體產品類,接下來,"工廠"就要出現了。

class foodfactory(object):

type = ""

def createfood(self, foodclass):

print(self. type, "factory produce a instance")

foodins = foodclass()

return foodins

class burge***ctory(foodfactory):

def __init__(self):

self.type = "burger"

class snackfactory(foodfactory):

def __init__(self):

self.type = "snack"

class beveragefactory(foodfactory):

def __init__(self):

self.type = "beverage"

foodfactory為抽象的工廠類,而burge***ctory,snackfactory,beveragefactory為具體的工廠類

if __name__ == '__main__':

burger_factory = burge***ctory()

snack_factory = snackfactory()

beverage_factory = beveragefactory()

cheese_burger = burger_factory.createfood(cheeseburger)

print(cheese_burger.getname(), cheese_burger.getprice())

chicken_wings = snack_factory.createfood(chickenwings)

print(chicken_wings.getname(), chicken_wings.getprice())

coke_drink = beverage_factory.createfood(coke)

print(coke_drink.getname(), coke_drink.getprice())

業務中先生成了工廠,然後用工廠中的createfood方法和對應的引數直接生成產品例項。列印結果為:

burger factory produce a instance

cheese burger 10.0

snack factory produce a instance

chicken wings 12.0

beverage factory produce a instance

coke 4.0

Python設計模式之工廠模式

工廠模式,可以理解為建立乙個工廠 類 這個工廠會根據你的需求 輸入 生產出 輸出 你想要的產品 物件 簡單說就是工廠類會根據你的輸入給你返回恰當的物件。class shape staticmethod deffactory shape if shape square return square if...

python設計模式之工廠模式

from abc import abcmeta,abstractmethod class coke metaclass abcmeta abstractmethod defdrink self pass class coca coke defdrink self print drink coca c...

python學習 設計模式之 工廠模式

一 工廠模式運用場景 若需要將物件的建立和使用解耦,工廠方法也能派上用場。工廠方法可以在必要時建立新的物件,從而提高效能和記憶體使用率。二 工廠模式案例 import xml.etree.elementtree as etree import json class jsonconnector def...