装饰模式的结构图如下:
基本介绍:
装饰模式是一种替代继承的技术,通过一种无须定义子类的方式给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。
通俗来说:在以前,我们都是通过继承的方式扩展子类的功能,但是通过装饰方式就不需要了。而且类只能继承一个类,扩展功能的能力有限,通过装饰的方式,我们可以很简单给对象增加多种职责。
在这里有一个点需要注意:对象之间的关联关系指的是具体构建和具体抽象装饰类的关联关系。
代码如下:
抽象构件
具体构件
抽象装饰类
具体装饰类
测试代码
测试结果
装饰模式的特点:
扩展对象功能比继承更加灵活,而且一个对象可以装饰多次,从而获取刚强大的功能。但是如果具体构件和具体装饰类过多就会占用更多的系统资源,比继承更加容易出错。
留个问题:在实际业务开发中,有人使用过装饰模式吗?