您的位置:首页 > 其它

包装设计模式2

2015-09-19 10:28 323 查看
包装设计模式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;

}

}

---------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: