class="p0" style="text-indent: 21pt; margin-top: 0pt; margin-bottom: 0pt;">第一次写学习日记,其实还不知道要写什么,那就说说所学的IO流吧。
装饰设计模式:
?
当想要对已有的对象进行功能增强时,
可以顶一类,将已有对象传入,基于已有的功能,并提供加强功能。
那么自定义的该类称为装饰类。
?
装饰类通常会通过构造方法接受被装饰的对象。
并基于被装饰的对象的功能,提供更强的功能。
装饰模式比继承要灵活,避免了继承体系的臃肿。
而且降低了类与类之间的关系。
?
装饰类因为增强已有对象,具备的功能和已有的是相同的,只不过提供了更多功能
所以装饰类和被装饰类听你歌唱是都属于一个体系中的。
?
?
最痛苦的就是留对象有很多,不知道该用哪一个,所以要是总结个规律就方便了。
例如:
1源:键盘录入。
??目的:控制台
需求:想把键盘录入的数据存储到一个文件中。
?源:键盘
目的:文件
需求:想要将一个文件的数据打印在控制台上。
源:文件。
目的:控制台/
?
通过两个明确来完成
1,明确源和目的。
源:输入流。?InputStream??Reader
目的:输出流。?OutputStream?Writer
2,操作的数据是否为纯文本。
是:字符流。
不是:字节流。
3,当体系明确后,在明确要使用那个具体的对象。
通过设备来进行区分:
目的设备:内存,硬盘,控制台。
?
例:
1,将一个文本文件中数据存储到另一个文件中。?复制文件。
源:因为是缘,所以使用读取流。??InputStream??Reader
是不是操作文本文件。
是!这时就可以选择Reader
这样体系就明确了。
?
接下来明确要使用该体系中的那个对象。
明确设备:硬盘。上一个文件
Reader体系中可以操作文件的对象是FileReader
?
是否需要提高效率:?是!,??加入Reader体系中缓冲区BufferedReader。
?
FileReader????fr???=???new???FielReader(“a.txt”);
BufferedReader???bufr???=???new???BufferedReader(fr);
?
?
目的:OutputStream??Writer
是否为纯文本。
是!?Writer
设备:硬盘,一个文件。
Writer体系中可以操作文件的对象FileWriter.
是否需要提高效率:?是!??加入Writer体系中缓冲区?BufferedWriter
?
FileWriter???fw??????=????new???FileWriter(“b.txt”);
BufferedWriter????bufw???=???new???BufferedWriter(fw);
?
?