包装设计模式(装饰设计模式)的使用
2016-09-16 19:18
477 查看
一、装饰
1、编写一个类,实现与被包装类(数据库驱动对Connection的实现)相同的接口。(使这个类和数据库的驱动实现有着相同的行为)
2、定义一个变量,引用被包装类的实例。
3、定义构造方法,传入被包装类的实例。
4、对于要改写的方法,编写自己的代码即可。
5、对于不需要改写的方法,调用原有对象的对应方法。
二、装饰变体(BufferedReader本身就是包装类,对Reader的包装。LineNumberReader,对BufferedReader的包装,还是他的子类)
1、编写一个类,继承已经是包装类的类。
2、定义一个变量,引用被包装类的实例。
3、定义构造方法,传入被包装类的实例。
4、覆盖掉需要改写的方法
例子(对BufferedReader的包装):
MyLineNumberReader.java文件:
测试类Test.java:
3.a.txt文件:
4。运行结果:
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;
相关文章推荐
- 编程经常使用设计模式具体解释--(中篇)(适配器、装饰、代理、外观、桥接、组合、享元)
- 设计模式_装饰模式概述和使用
- Ruby使用设计模式中的代理模式与装饰模式的代码实例
- 27 API-反射(类的加载器,反射的使用,动态代理)&设计模式(装饰设计模式,模版设计模式)&JDK新特性(JDK5,JDK6,JDK7,DK8)
- 【设计模式】装饰器模式与Java Servlet、Spring Session在其中的使用
- Unity设计模式之装饰模式的使用
- 使用Object-C实现23种设计模式之装饰器模式
- 使用装饰设计模式加密数据
- 设计模式-装饰模式概述和使用-IO流
- 实例讲解Ruby使用设计模式中的装饰器模式的方法
- JavaWeb学习篇——使用过滤器及装饰器设计模式解决全站乱码问题
- java设计模式--装饰器设计模式(javaIO设计使用)
- 使用装饰着设计模式开发自定义jdbc连接池
- [转贴] 不要以为使用了模式就是好设计
- 使用设计模式构建通用数据库访问类
- 使用设计模式构建通用数据库访问类(转自天极)
- 使用设计模式改善程序结构(二)
- 使用设计模式改善程序结构(一)
- 设计模式-旧话重提之类工厂的使用
- 《C# 设计模式》笔记: 第4章 在C#中使用类和对象