Java——装饰设计模式
来源:互联网 发布:尚观java就业班视频 编辑:程序博客网 时间:2024/05/29 03:15
/*装饰设计模式:基于已经存在的功能,提供增强的功能装饰设计模式的由来:Rreader ---TextReader ---MediaReader提高子类的读的效率Reader ---TextReader ---BufferedTextReader ---MediaReader ---BufferedMediaReader ---OtherReader ---BufferedOtherReader既然都是提高读的效率,所以就把这个功能提取出来,封装到一个类中,谁需要被提高效率就把谁作为参数传递给该类的构造方法class BufferedReader{ private Reader reader; public BufferedReader(Reader reader){ this.reader = reader; }}使用装饰设计模式后,继承体系如下Reader ---TextReader ---MediaReader ---OtherReader ---BufferedReader1:装饰设计模式使原有继承体系变简单了2:因为是在原有功能提供增强功能,所以这个类还属于原体系*//*import java.io.*;class test{ public static void main(String[] args)throws IOException{ FileReader fr = new FileReader("temp.txt"); LineNumberReader bnr = new LineNumberReader(fr); String line = null; bnr.setLineNumber(4); while((line = bnr.readLine())!=null){ System.out.println(bnr.getLineNumber()+":"+line); } bnr.close(); }}*///自定义LineNumberReaderimport java.io.*;class MyLineNumberReader extends MyBufferedReader{ private int lineNumber; public MyLineNumberReader(Reader r){ super(r); } public void setLineNumber(int lineNumber){ this.lineNumber = lineNumber; } public int getLineNumber(){ return lineNumber; } //重写一次读一行的功能 public String myReadLine()throws IOException{ ++lineNumber; return super.myReadLine(); }}//上篇中有介绍class MyBufferedReader{ private Reader r;//具备读功能的成员 private char[] arr = new char[1024];//提高效率的缓冲区 private int index; private int count;//统计缓冲区中的字符个数 public MyBufferedReader(Reader r){ this.r = r; } //一次读一个字符的功能 public int myRead()throws IOException{ //先判断缓冲区中是否有字符 if(count==0){ //从文件中读一批数据到缓冲区 count = r.read(arr); index = 0;//下标置为0,从头开始取 } if(count<0){ return -1; } int num = arr[index];//从缓冲区中取一个字符 count--;//数量-1 index++; return num; } //一次读一行的功能 //反复调用myRead()方法,不够一行的时候存储,够一行的时候返回 public String myReadLine()throws IOException{ StringBuilder sb = new StringBuilder();//实现存储字符 int num; while((num=myRead())!=-1){ if(num=='\r') continue; else if(num=='\n') return sb.toString(); else sb.append((char)num); } return null; } public void myClose()throws IOException{ r.close(); }}class test{ public static void main(String[] args)throws IOException{ FileReader fr = new FileReader("temp.txt"); MyLineNumberReader mnr = new MyLineNumberReader(fr); String line = null; while((line = mnr.myReadLine())!=null){ System.out.println(mnr.getLineNumber()+":"+line); } mnr.myClose(); }}
阅读全文
2 0
- java设计模式——装饰模式
- java设计模式——装饰模式
- java设计模式——装饰模式
- java设计模式——装饰模式
- Java设计模式——装饰模式
- Java 设计模式—装饰者模式
- Java设计模式—装饰模式
- java设计模式—装饰者模式
- 浅谈Java设计模式—-装饰模式
- JAVA基础——装饰设计模式
- Java——装饰设计模式
- Java设计模式之——装饰设计模式
- JAVA设计模式——装饰设计模式
- Java设计模式——装饰者设计模式
- Java设计模式——装饰设计模式
- 设计模式—装饰模式
- 设计模式—装饰模式
- 设计模式—装饰模式
- 用扩展事件捕获死锁
- XML解析方式
- idea中使用@Autowired报错
- 数据降维---LLE(Locally Linear Embedding)---局部线性嵌入(2)
- 代码服务器配置流程
- Java——装饰设计模式
- android aosp 编译运行emulator
- Gdi+ BUTTON开源地址
- C语言中const的用法
- JAVA课程作业1--骰子游戏
- 《不抱怨的世界》
- [BZOJ1019][SHOI2008]汉诺塔
- python核心编程-2
- 神经网络案例分析4-5-神经网络遗传算法函数极值寻优-基于BP_Adaboost 的强分类器设计