一、BufferedWriter
1.使用带有缓冲区的字符读和写进行试验
package com.bjpowernode.java_learning;
import java.io.*;
public class D100_1_BufferedWriter {
public static void main(String[] args) throws Exception{
//创建带有缓冲区的字符输出流
String address = "C:\\\\Users\\\\lenovo1\\\\Workspaces\\\\MyEclipse CI\\\\Java_learning\\\\src\\\\com\\\\bjpowernode\\\\java_learning\\\\temp1.txt";
BufferedWriter bw = new BufferedWriter(new FileWriter(address));
//或者如下这么写
//BufferedWriter bw = new BufferedWriter(OutputStreamWriter(new FileOutputStream(address,true)));
//开始写
bw.write("jdfoishjfuji");
//写入一个行分隔符
bw.newLine();
bw.write("这是一个测试的语句");
//刷新
bw.flush();
//关闭
bw.close();
//使用BufferedReader和BufferedWriter来完成复制
String address2 = "C:\\\\Users\\\\lenovo1\\\\Workspaces\\\\MyEclipse CI\\\\Java_learning\\\\src\\\\com\\\\bjpowernode\\\\java_learning\\\\temp2.txt";
BufferedReader br = new BufferedReader(new FileReader(address));
BufferedWriter bw2 = new BufferedWriter(new FileWriter(address2));
String temp = null;
while((temp=br.readLine())!=null) {
bw2.write(temp);
bw2.newLine();
}
bw2.flush();
br.close();
bw2.close();
}
}
二、装饰者模式
1.先举一个简单的例子
对于A100这个类中的m1方法,我们想要扩展,我们可以想到的一个简单的方法就是创建一个新类B100,然后重写方法
但是这样的关联写太强了,因此还可以使用使用其他方法—装饰者模式
2.注意点
(1)装饰者模式中要求:装饰者中含有被装饰者的引用
(2)装饰者模式中要求:装饰者和被装饰者应该实现同一个类型
package com.bjpowernode.java_learning;
public class D100_2_DecoratorMode {
public static void main(String[] args) throws Exception{
A100 a = new A100();
B100 b = new B100();
a.m1();
b.m1();
System.out.println("=============");
//1.创建被装饰者
FileReader fr = new FileReader();
//2.创建装饰者
BufferedReader br = new BufferedReader(fr);
//3.通过执行装饰者中的方法间接去执行被装饰者中的方法
br.close();
}
}
class A100{
public void m1() {
System.out.println("m1");
}
}
class B100 extends A100{
public void m1() {
super.m1();
System.out.println("重写了");
}
}
//使用BufferedReader对FileReader中的close方法进行扩展
class BufferedReader extends parent100{//BufferedReader100是装饰者
//关联关系
FileReader reader;//FileReader就是被装饰者
//构造方法
BufferedReader(FileReader reader){
this.reader = reader;
}
//对FileReader中的close方法进行扩展
public void close() {
//扩展
System.out.println("扩展代码1");
reader.close();
System.out.println("扩展代码2");
}
}
class FileReader extends parent100{
public void close() {
System.out.println("guanbi");
}
}
abstract class parent100{
public abstract void close();
}
三、源码:
D100_1_BufferedWriter.java
D100_2_DecoratorMode.java
https://github.com/ruigege66/Java/blob/master/D100_1_BufferedWriter.java
https://github.com/ruigege66/Java/blob/master/D100_2_DecoratorMode.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客园:https://www.cnblogs.com/ruigege0000/
4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料