Java連載100-帶有緩衝區的字符讀與寫、裝飾者模式

1、BufferedWriterjava

1.使用帶有緩衝區的字符讀和寫進行試驗node

 

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();

   

  }

​

}

2、裝飾者模式git

1.先舉一個簡單的例子github

對於A100這個類中的m1方法,咱們想要擴展,咱們能夠想到的一個簡單的方法就是建立一個新類B100,而後重寫方法微信

可是這樣的關聯寫太強了,所以還能夠使用使用其餘方法---裝飾者模式學習

2.注意點​測試

(1)裝飾者模式中要求:裝飾者中含有被裝飾者的引用大數據

(2)裝飾者模式中要求:裝飾者和被裝飾者應該實現同一個類型ui

 

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();

}

3、源碼:this

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.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索