装饰者(或修饰)模式(Decorator):
增加一个修饰类包裹原来的类,装饰过的对象可替代原始对象。
原则:
类应该对扩展开放,对修改关闭。案例:
奶茶店有多种饮料:奶茶、果汁、咖啡;每种饮料可搭配若干配料:珍珠、布丁、牛奶;要能根据顾客的任意搭配下单并计算价钱;代码:
#!/usr/bin/python
class Beverage:
description = "Unknown Beverage"
def get_description(self):
return self.description
def cost(self):
pass
class CondimentDecorator(Beverage):
def get_description(self):
pass
class MilkyTea(Beverage):
def __init__(self):
self.description = "MilkyTea"
def cost(self):
return 1.99
class FruitJuice(Beverage):
def __init__(self):
self.description = "FruitJuice"
def cost(self):
return 1.8