首页 > 代码库 > 包装设计模式的实现以改进BufferedReader中的readLine方法为例
包装设计模式的实现以改进BufferedReader中的readLine方法为例
- 实现与目标对象相同的接口 BufferedReader
- 定义一个变量记住目标对象
- 定义一个构造器接收被增强对象
- 覆盖需要增强的方法
- 对于不想增强的方法,直接调用目标对象的方法。
package cn.liuning.demo;import java.io.BufferedReader;import java.io.IOException;import java.io.Reader;/* 1.实现与目标对象相同的接口 BufferedReader 2.定义一个变量记住目标对象 3.定义一个构造器接收被增强对象 4.覆盖需要增强的方法 5.对于不想增强的方法,直接调用目标对象的方法。 *///继承BufferedReader相当于实现了他的接口,是BufferedReader子类的同时又是BufferedReader的包装类//覆写他的方法的时候,不采用父类继承的方式,全部调用目标资源的方法,这就成了包装类了。public class BufferedReaderWrapper extends BufferedReader { private BufferedReader br; private int linenum=1; //通过构造函数接受被增强对象 public BufferedReaderWrapper(BufferedReader in) { super(in);//显示调用父类的构造函数。使得语法不出错 this.br=in; } //覆盖想覆盖的方法就可以了 @Override public String readLine() throws IOException { // TODO 自动生成的方法存根 //return super.readLine();原始的是调用父类的readLine(); String line = br.readLine(); if(line == null) { return line; } return linenum++ +":"+line; } //其他方法从父类继承,便实现了对于不想增强的方法,直接调用目标对象的方法。}package cn.liuning.demo;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class Test { public static void main(String[] args) { try { BufferedReader br=new BufferedReader(new FileReader("src/cn/liuning/demo/BufferedReaderWrapper.java")); BufferedReaderWrapper wrapper = new BufferedReaderWrapper(br); String line=null; while((line = wrapper.readLine())!=null) { System.out.println(line); } } catch (FileNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } catch (IOException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }}
包装设计模式的实现以改进BufferedReader中的readLine方法为例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。