包装设计模式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;
}
}
---------------------------------------------------------------------------------------------
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;
}
}
---------------------------------------------------------------------------------------------
相关文章推荐
- 周鸿祎创业以来的“六大战役”
- Java基础知识强化28:Scanner类之Scanner类的概述
- 基于xmpp客户端与服务器的快速重连方法、终端和服务器
- Java知识整理(十七)之Servlet
- UVA - 674 Coin Change(完全背包)
- 深入理解按位异或运算符
- iOS深复制、浅复制与完全深度复制
- 第13周项目1-动物所谓的
- Android Studio离线打包DCloud Html 5+项目
- Java知识整理(十六)之JavaScript
- 60分钟Python快速学习(给发哥一个交代)
- Lua学习之表达式
- POJ - 1252 Euro Efficiency(正负背包)
- Windows Server2008通过命令行方式添加防火墙规则
- Jquery 动画积分效果
- 华为 mate 7 root
- 华为 mate 7 root
- 华为 mate 7 root
- Objective-c 可变参数列表缺陷
- httpclient简单学习(一)