包装设计模式2

包装设计模式2
      1. 包装设计模式步骤:
               ① 对于被包装类实现了接口的编写步骤:
                            编写一个类,实现与被包装类相同的接口;
                            定义一个变量,记住被包装对象的引用,
                            定义构造方法,注入被包装对象的引用,
                            对于要改写的方法,写你的代码,
                            对于不要改写的方法,调用原有对象的对应方法
                            
               ②  对于被包装类没有实现接口的编写步骤:
                            编写一个类,继承被包装类,
                            定义一个变量,记住被包装对象的引用,
                            定义构造方法,注入被包装对象的引用,
                            对于要改写的方法,写你的代码


     2 例子


          ---------------------------------------------------------------------------------------------


          将类的内容读取输出,并用包装设计模式对
          BufferedReader类中的readline方法进行改写,增加输出行号的功能   
          public class BufferedReaderDemo {
                  public static void main(String[] args) throws Exception {
                          Reader in = new FileReader("src/cn/itcast/wrapper/BufferedReaderDemo.java");
                          BufferedReader br = new BufferedReader(in);
                          MyBufferedReader mbr = new MyBufferedReader(br);
                          String data = null;
                          while((data=mbr.readLine())!=null){
                                  System.out.println(data);
                          }
                          br.close();
                  }
          }
          ---------------------------------------------------------------------------------------------
          // 改写BufferedReader类中的readline()方法,完成增加行号的功能
          public class MyBufferedReader extends BufferedReader{
                  private BufferedReader br;
                  private int count = 1;                 
                  public MyBufferedReader(BufferedReader br){
                          super(br);
                          this.br = br;
                  }
                  // 先拿到原有对象的对应方法,判断其返回值后再进行包装
                  @Override
                  public String readLine() throws IOException {
                          String data = br.readLine();
                          if(data==null)
                                  return data;
                          return count+++data;
                  }            
          }
          ---------------------------------------------------------------------------------------------
          // 简写形式
          public class MyBufferedReader extends BufferedReader{
                  private int count = 1;
                  public MyBufferedReader(BufferedReader br){
                          super(br);
                  }
                  // 先拿到原有对象的对应方法,判断其返回值后再进行包装
                  @Override
                  public String readLine() throws IOException {
                          String data = super.readLine();
                          if(data==null)
                                  return data;
                          return count+++data;
                  }           
          }
          ---------------------------------------------------------------------------------------------
          
          
          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值