""" 一、快餐点餐系统 点餐系统,有三类可选择产品,主餐,小食,饮料。我们可以任意选择,下单,支付完成之后,订单完成。 工厂模式-生成这些食物的逻辑主题 """
class Burger(): 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
class Snack(): name = "" price = 0.0 type = "SNACK" def getPrice(self): return self.price def setPrice(self, price): self.price = 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.anme = "chickenwings" self.pric = 12.0
class Beverage(): 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(): type = "" def createFood(self, foodClass): print(self.type, " factory produce a instance.") foodIns = foodClass() return foodIns class burgerFactory(FoodFactory): def __init__(self): self.type = "BURGER" class snackFactory(FoodFactory): def __init__(self): self.type = "SNACK" class bevergeFactory(FoodFactory): def __init__(self): self.type = "BEVERAGE" """ 同样,foodFactory为抽象的工厂类, 而burgerFactory,snackFactory,beverageFactory为具体的工厂类。 """
if __name__=="__main__": burgerF=burgerFactory() snackF=snackFactory() beverage_factory = bevergeFactory() cheese_burger = beverage_factory.createFood(cheeseBurger) print(cheese_burger.getName(), cheese_burger.getPrice()) chicken_wings = snackF.createFood(chickenwings) print(chicken_wings.getName(), chicken_wings.getPrice()) coke_drink = beverage_factory.createFood(coke) print(coke_drink.getName(),coke_drink.getPrice())
BEVERAGE factory produce a instance. cheese burger 10.0 SNACK factory produce a instance. 0.0 BEVERAGE factory produce a instance. coke 4.0