一、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/
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4