包装设计模式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;
}
}
---------------------------------------------------------------------------------------------
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;
}
}
---------------------------------------------------------------------------------------------