"""
装饰器模式
"""
class Drink(object):
def __init__(self):
self.Cost = 0
self.Desc = ""
def getDesc(self):
return self.Desc
def cost(self):
pass
class FruitDrink(Drink):
def __init__(self):
super(FruitDrink, self).__init__()
def getDesc(self):
pass
class BigSize(Drink):
def __init__(self):
super(BigSize, self).__init__()
self.BigSize()
def BigSize(self):
self.Desc = "大杯"
def cost(self):
return 5
class MidSize(Drink):
def __init__(self):
super(MidSize, self).__init__()
self.MidSize()
def MidSize(self):
self.Desc = "中杯"
def cost(self):
return 3
class SmallSize(Drink):
def __init__(self):
super(SmallSize, self).__init__()
self.SmallSize()
def SmallSize(self):
self.Desc = "小杯"
def cost(self):
return 2
class Apple(FruitDrink):
def __init__(self, drink):
super(Apple, self).__init__()
self.m_drink = None
self.Apple(drink)
def Apple(self, drink):
self.m_drink = drink
print(self.m_drink.getDesc() + "苹果")
def getDesc(self):
return self.m_drink.getDesc() + "苹果"
def cost(self):
return 2 + self.m_drink.cost()
class Orange(FruitDrink):
def __init__(self, drink):
super(Orange, self).__init__()
self.m_drink = None
self.Orange(drink)
def Orange(self, drink):
self.m_drink = drink
print(self.m_drink.getDesc() + "橙子")
def getDesc(self):
return self.m_drink.getDesc() + "橙子"
def cost(self):
return 5 + self.m_drink.cost()
class Watermelon(FruitDrink):
def __init__(self, drink):
super(Watermelon, self).__init__()
self.m_drink = None
self.Watermelon(drink)
def Watermelon(self, drink):
self.m_drink = drink
print(self.m_drink.getDesc() + "西瓜")
def getDesc(self):
return self.m_drink.getDesc() + "西瓜"
def cost(self):
return 10 + self.m_drink.cost()
Bigitem = BigSize()
Miditem = MidSize()
Smallitem = SmallSize()
AppleBigItem = Apple(Bigitem)
print(AppleBigItem.getDesc() + ", " + str(AppleBigItem.cost()))
print("共花费%d" % (AppleBigItem.cost()))
print("--------------------------")
OrangeApple = Orange(AppleBigItem)
print(OrangeApple.getDesc() + ", " + str(OrangeApple.cost()))
print("共花费%d" % (OrangeApple.cost()))
print("--------------------------")
WatermelonSmallItem = Watermelon(Smallitem)
print(WatermelonSmallItem.getDesc() + ", " + str(WatermelonSmallItem.cost()))
print("共花费%d" % (WatermelonSmallItem.cost()))
print("--------------------------")
"""
大杯苹果
大杯苹果, 7
共花费7
--------------------------
大杯苹果橙子
大杯苹果橙子, 12
共花费12
--------------------------
小杯西瓜
小杯西瓜, 12
共花费12
--------------------------
"""
headfirsh设计模式——装饰器模式例子
最新推荐文章于 2024-06-18 18:53:41 发布