JAVA基础 day20 装饰模式 自己实现LineNumberReader类
2016-10-20 14:36
387 查看
装饰设计模式
当想要对已有对象进行功能增强时,可以自定义类,将已有对象传入,基于已有的功能,进行增强,自定义的类就叫做装饰类。
装饰类通常会通过构造方法来接受已有的被装饰的对象,并基于被装饰类的功能,提供更强的功能。
LineNumberReader 类:提供了行号的设置和获取方法。是BufferedReader的子类
自己实现LineNumberReader中的设置行号方法和获取行号方法
当想要对已有对象进行功能增强时,可以自定义类,将已有对象传入,基于已有的功能,进行增强,自定义的类就叫做装饰类。
装饰类通常会通过构造方法来接受已有的被装饰的对象,并基于被装饰类的功能,提供更强的功能。
LineNumberReader 类:提供了行号的设置和获取方法。是BufferedReader的子类
import java.io.*; class LineNumberReaderDemo { public static void main(String[]args)throws IOException { FileReader fr=new FileReader("buff.txt"); LineNumberReader lnr=new LineNumberReader(fr); FileWriter fw=new FileWriter("buff_lineCopy.txt"); BufferedWriter bfw=new BufferedWriter(fw); String s=" "; while((s=lnr.readLine())!=null) { bfw.write(lnr.getLineNumber()+s); bfw.newLine(); } lnr.close(); bfw.close(); } }
自己实现LineNumberReader中的设置行号方法和获取行号方法
import java.io.*; class MyLineNumberReader { private FileReader fr; private int lineNumber=0; MyLineNumberReader(FileReader fr) { this.fr=fr; } public String myReadLine()throws IOException { lineNumber++;//每读一行就加1 StringBuilder sb=new StringBuilder(); int num=0; while((num=fr.read())!=-1) { if(num=='\r') continue; if(num=='\n') return sb.toString(); sb.append((char)num); } return null; } public int myGetNumberLine() { return lineNumber; } public void mySetLIneNumber(int lineNumber) { this.lineNumber=lineNumber; } } class MyLineNumberReaderDemo { public static void main(String[]args)throws IOException { FileReader fr=new FileReader("buff.txt"); MyLineNumberReader mlnr=new MyLineNumberReader(fr); String s=" "; while ((s=mlnr.myReadLine())!=null) { System.out.println(mlnr.myGetNumberLine()+s); } } }
相关文章推荐
- 黑马程序员:Java基础总结----装饰设计模式
- 装饰模式——自己实现一个BufferedReader
- 设计模式之第4章-装饰模式(Java实现)
- Java语言实现的装饰设计模式复习
- 黑马程序员——Java基础——IO流、字符流、字节流、缓冲区技术、装饰设计模式、LineNumberReader等
- Android基础-java的装饰模式
- 黑马程序员--java 基础之IO流 字符流与装饰模式概述 --06
- 设计模式之装饰模式(Java实现)
- JAVA与多线程开发(线程基础、继承Thread类来定义自己的线程、实现Runnable接口来解决单继承局限性、控制多线程程并发)
- Java 实现装饰(Decorator)模式
- Java基础19:缓冲区;装饰模式;字节流;字符流
- Java基础---Java---IO流-----BufferedReader、BufferedWriter、缓冲区、装饰设计模式及和继承的区别
- 【装饰设计模式】写一个MyBufferedReader实现自己的ReadLine方法、增强BufferedReader的ReaderLine()
- 黑马程序员——学习Java基础之 io LineNumberReader 之装饰设计模式
- Java基础之IO流,装饰设计模式的应用之行号、缓冲读取文本文件
- java基础 IO/线程/GUI,装饰模式
- Java基础21--IO流--装饰设计模式--缓冲流
- JAVA基础——装饰设计模式
- 黑马程序员---2015.6.25java基础笔记---装饰模式--字节流拷贝图片--字节流缓冲--字节字符转化--File类
- 源自老毕Java基础教程--装饰设计模式