装饰设计模式就是对对象进行包装,实现接口扩展功能,并达到解耦的目的.
常见的例子有BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter等
1.获取被装饰类的引用
2.在构造方法中传入被装饰类的对象
3.对原有的功能进行升级扩展
代码示例:
public class Wrap {
/**
* @param args
* 装饰设计模式的好处是:
* 耦合性不强,被装饰的类的变化与装饰类的变化无关
*/
public static void main(String[] args) {
Programmer cxy = new Programmer(new Student());
cxy.code();
}
}
interface Coding {
public void code();
}
class Student implements Coding {
@Override
public void code() {
System.out.println("javase");
System.out.println("javaweb");
}
}
class Programmer implements Coding {
//1,获取被装饰类的引用
private Student s; //获取学生引用
//2,在构造方法中传入被装饰类的对象
public Programmer(Student s) {
this.s = s;
}
//3,对原有的功能进行升级
@Override
public void code() {
s.code();
System.out.println("AI");
System.out.println("数据库");
System.out.println("大数据");
System.out.println("区块链技术");
}
}
输出:
javase
javaweb
AI
数据库
大数据
区块链技术