装饰者模式示例,BufferedReader,BufferedWriter
class Person{void chifan(){System.out.println("chifan");}}class SuperPerson {private Person p;SuperPerson(Person p){this.p = p;}public void superChifan(){System.out.println("开胃酒");p.chifan();System.out.println("甜点");System.out.println("来一根");}}/*装饰设计模式:可以对原有对象的功能进行增强。只要将原有对象作为参数传递给装饰类的构造函数即可。对外提供增强方法。通过以前所学,继承一样可以解决这个问题。那么装饰和继承有什么区别?继承方式增强每一个子类对象。Writer|--FileWriter|--BufferedFileWriter。|--MediaWriter|--BufferedMediaWriter|--DataWriter|--BufferedDataWriter这样的设计可以完成基本需求,但是导致了继承体系的臃肿,而且子类功能的重复。--------class BufferedWriter{char[]BufferedWriter(FileWriter w){}BufferedWriter(MediaWriter w){}BufferedWriter(DataWriter w){}public void write(){}}class BufferedWriter extends Writer{BufferedWriter(Writer w){}public void write(){}}Writer|--FileWriter|--MediaWriter|--DataWriter|--BufferedWriter*/class PersonDemo{public static void main(String[] args) {Person p = new Person();p.chifan();//SuperPerson sp = new SuperPerson(p);//sp.superChifan();}}?