包装设计模式(装饰设计模式)的使用

一、装饰
1、编写一个类,实现与被包装类(数据库驱动对Connection的实现)相同的接口。(使这个类和数据库的驱动实现有着相同的行为)
2、定义一个变量,引用被包装类的实例。
3、定义构造方法,传入被包装类的实例。
4、对于要改写的方法,编写自己的代码即可。
5、对于不需要改写的方法,调用原有对象的对应方法。
二、装饰变体(BufferedReader本身就是包装类,对Reader的包装。LineNumberReader,对BufferedReader的包装,还是他的子类)
1、编写一个类,继承已经是包装类的类。
2、定义一个变量,引用被包装类的实例。
3、定义构造方法,传入被包装类的实例。
4、覆盖掉需要改写的方法

例子(对BufferedReader的包装):
MyLineNumberReader.java文件:

import java.io.BufferedReader;
import java.io.IOException;

//对BufferedReader的readLine方法进行改写,输出行号
public class MyLineNumberReader extends BufferedReader{
    private int count = 1;
    public MyLineNumberReader(BufferedReader br){
        super(br);
    }
    public String readLine() throws IOException {
        String data = super.readLine();
        if(data==null)
            return null;
        return (count++)+":"+data;
    }
}

测试类Test.java:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;


public class Test {
    public static void main(String[] args) throws Exception {

        Reader reader = new FileReader("src/a.txt");
        BufferedReader br = new BufferedReader(reader);
        MyLineNumberReader lbr = new MyLineNumberReader(br);
        String data = null;
        while((data = lbr.readLine())!=null){
            System.out.println(data);
        }
        br.close();
    }
}

3.a.txt文件:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;

4。运行结果:

1:import java.io.BufferedReader;
2:import java.io.FileNotFoundException;
3:import java.io.FileReader;
4:import java.io.Reader;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值