十六、装饰者模式

1、装饰者模式

装饰者模式比继承更能降低代码的耦合度,有利于项目的扩展;
装饰者模式中要求:
  1) 装饰者和被装饰则应该实现同一个类;
  2) 装饰者含有被装饰者的引用
  3) 一个类含有另一个类明显的关联关系
  4) 装饰者和被装饰者里面的方法一定要一样,为什么要这样做?是为了保障这两个类具有相同的方法

23种设计模式引用:http://www.cnblogs.com/lyb0103/p/7344031.html

|装饰者模式示例|

public class ZhuangShiZheMoShi {
   public static void main(String[] args) {
    FileReader fReader=new FileReader();//创建被装饰者
    BufferedReader brReader=new BufferedReader(fReader);//创建装饰者
    brReader.close();//通过执行装饰者中的方法间接去执行被装饰者中的方法。
   }
}

abstract class Reader {
   public abstract void close();
}

public class FileReader extends Reader {//FileReader 是被装饰者  
   @Override
   public void close() {
    System.out.println("FileReader类中的重写的close方法执行");
   }
}

public class BufferedReader extends Reader {//BufferedReader是装饰者
   FileReader fileReader;//一个类含有另一个类明显的关联关系
   public BufferedReader(FileReader fileReader){//装饰者模式中要求,装饰者含有被装饰者的引用
      this.fileReader=fileReader;
   }
   @Override
   public void close() {
      System.out.println("扩展代码1");//什么是扩展就是在源代码执行的基础之上,加一些代码,这就是扩展
      fileReader.close();
      System.out.println("扩展代码2");
   }
}

 

posted @ 2016-12-25 11:44  爱笑的berg  阅读(130)  评论(0)    收藏  举报