Spring中使用到的设计模式(八)----装饰器模式
它把每个要装饰的功能都放在单独的类中,并让这个类包装它要装饰的对象,因此,当需要执行特殊行为的时候,客户端代码就可以在运行时根据需要有选择地、进行按顺序地使用装饰功能包装对象
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。
装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。
1、孙悟空有 72 变,当他变成"庙宇"后,他的根本还是一只猴子,但是他又有了庙宇的功能。
2、不论一幅画有没有画框都可以挂在墙上,但是通常都是有画框的,并且实际上是画框被挂在墙上。在挂在墙上之前,画可以被蒙上玻璃,装到框子里;这时画、玻璃和画框形成了一个物体。
一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。
public abstract class DecoMecha extends Mecha{
public void decorete(Mecha mecha) {
public class FireMecha extends DecoMecha{
System.out.println("FireMecha类装饰");
public class FlyMecha extends DecoMecha{
System.out.println("FlyMecha装饰");
public static void main(String[] args) {
FireMecha fireMecha = new FireMecha();
FlyMecha flyMecha = new FlyMecha();