装饰设计模式也成为包装模式,属于结构性设计模式。该模式也是继承关系的替代方法之一,对比继承的优点是装饰模式的低耦合性,被装饰类的变化与装饰类无关。
装饰设计模式,就是动态的给对象添加一些额外的功能。比如一个毛坯房,可以装修成不同的风格以达到不同的功能,如中式、欧式等。
java IO中很多用到装饰设计模式,比如BufferedReader、BufferedWriter
步骤:
- 获取被装饰类的引用
- 在构造方法中传入被装饰类的对象
- 对原有的功能进行升级
public class Demo {
public static void main(String[] args){
SuperStudent superStudent = new SuperStudent(new Student ());
superStudent.code();
}
}
interface Coder{
public void code();
}
class Student implements Coder{
@Overvide
public void code(){
System.out.println("会java");
System.out.println("会php");
}
}
class SuperStudent implements Coder{
//获取被装饰类的引用
private Student s;
//在构造方法中传入被装饰类的对象
public SuperStudent (Student s){
this.s=s;
}
//对原有的功能进行升级
@Overvide
public void code(){
s.code();
System.out.println("会python");
System.out.println("会JavaScript");
}
}