headfirsh设计模式——装饰器模式例子

"""
装饰器模式
"""
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
--------------------------
"""
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值