标签:
装饰者模式
动态的将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择。
装饰者模式遵循设计原则:对扩展开放,对修改关闭
装饰者模式可以避免因继承所造成的子类爆炸(虽然依旧很多子类)。因为一个被装饰者可以用多个装饰者修饰。同样的改变可以由一个装饰者替代,而不是每个子类重写。当有新的改变时,所做的是继承父类新建一个装饰类来适应这部分改变。装饰者模式的重点是扩展而不是改变。
eg:咖啡、香草咖啡、雪顶咖啡和打折后的咖啡
如果用装饰者模式实现需要咖啡类、香草类、雪顶类、打折类。咖啡类被其他三个类修饰,可以得到8种咖啡:咖啡、香草咖啡、雪顶咖啡、特价咖啡、香草特价、雪顶特价啊、香草雪顶、香草雪顶特价
如果用继承的话就需要8个类了。因为继承面对改变需要重写。
缺点:有大量的小类。当装饰数量增多时会影响效率。
标签:
原文地址:http://www.cnblogs.com/loststart/p/5181806.html