装饰者模式是允许向一个现有的对象添加新的功能,但是不改变其结构。也就是给一个对象做一个在外的包装。
装饰者模式的创建思路:
1.定义一个接口,该接口中的方法是必须要实现的方法;
2.设计一个或者多个的装饰者,每个都继承接口,并且将接口作为构造函数的参数传入;
3.使用一个主体类,继承接口并且实现确切的功能;
4.在调用的时候最先调用主体,然后将主体以参数形式传递给装饰者。由最后一个装饰者调用接口中的方法;
具体实现如下:
1.接口,作为装饰者的类都必须继承它;
public interface MyDecoration {
public void paint();
}
2.装饰者类
public class Mydec implements MyDecoration {
private MyDecoration decor;
public Mydec(MyDecoration decor) {
this.decor = decor;
}
public void paint(){
decor.paint();
System.out.println("给画涂上了颜色");
}
3.需要装饰的主体类
public class MyPaint implements MyDecoration{
@Override
public void paint() {
// TODO Auto-generated method stub
System.out.println("用铅笔画了一幅画");
}
}
4.具体调用
public class Test {
public static void main(String[] args) {
MyPaint p=new MyPaint();//实例化主体类
Mydecs ms=new Mydecs(p);//实例化装饰类
ms.paint(); //调用装饰类方法
}
}
至此我们就简单实现了一个装饰者:运行以上程序我们得到的结果为:用铅笔画了一幅画,给画涂上了颜色;