场景
王大叔的大伯开了一家店,这家店在打印发票的时候,有的时候要打印个体名,有的时候要打印单位名,有的时候要时间。因为这个功能还在增加,所以王大叔想改进一下发票的打印程序,使这些功能能简单地加上去。
于是他写下了下列代码:
class TaxBill:
def __init__(self, amount):
self.amount = amount
class UserNameTaxBill:
def __init__(self, tax_bill):
self.tax_bill = tax_bill
def print_user_name(self, name):
print(name)
class TimeTaxBill:
def __init__(self, tax_bill):
self.tax_bill = tax_bill
def print_time(self, time):
print(time)
总结
意图:动态地给一个对象添加一些额外的责任。就增加功能来说,Decorator模式比生成子类更加灵活。
问题:要使用的对象将执行所需的基本功能。但是,可能需要为这个对象将添加某些功能,这些附加功能可能发生在对象的基本功能之前或者之后。
工作原理:创建始于Decorator对象终于原对象的一个对象链。
解决方案:无需创建子类,而扩展一个对象的功能。