Java连载100-带有缓冲区的字符读与写、装饰者模式
程序员文章站
2022-04-15 13:44:18
一、BufferedWriter 1.使用带有缓冲区的字符读和写进行试验 package com.bjpowernode.java_learning; import java.io.*; public class D100_1_BufferedWriter { public static voi ......
一、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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料
下一篇: PS制作一个简易的公章/印章