//表示Coder
interface Coder{
public void code();
}
//Student类实现了Coder接口,并作为被装饰类
class Student implements Coder{
public void code(){
system.out.println("math");
system.out.println("english");
system.out.println("java");
}
}
//Worker同样实现Coder,并作为装饰类
class Worker inplements coder{
private Student s;//获取被装饰类的引用,Worker也是从学生一路走来的
public Worker(Student s){//构造方法传入被装饰类对象
this.s = s;
}
public void code(){
s.code();//具有学生类具有的能力
system.out.println("teamwork");//自己独特的能力
}
}
- 应用:IO流基本上就是采用了装饰设计模式设计的,InputStream就是装饰者模式中的超类,ByteArrayInputStream,FileInputStream相当于被装饰者,这些类都提供了最基本的字节读取功能。而另外一个和这两个类是同一级的类FilterInputStream即是装饰者,LineNumberInputStream,DataInputStream,BufferedInputStream,PushbackInputStream这些都是被装饰者装饰后形成的成品,提供了除基本的字节读取功能之外的额外功能。