欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 中設計模式(裝飾設計模式)的實例詳解

 更新時間:2017年09月21日 09:47:22   作者:海那邊的小萌男  
這篇文章主要介紹了java 中設計模式(裝飾設計模式)的實例詳解的相關資料,希望通過本文能幫助到大家,需要的朋友可以參考下

java 中設計模式(裝飾設計模式)的實例詳解

應用場景

在不對原有對象類進行修改的基礎上,給一個或多個已有的類對象提供增強額外的功能.

我覺得可以從字面理解,裝飾,裝飾房子。房子可以看成原有的類。等于你把一個已經建好的房子按照自己的想法再裝飾一遍。繼承也可以實現(xiàn)這樣的功能,但是繼承有它的缺點,繼承只是單一繼承。裝飾設計模式可以取多個不同的類的不同功能。

具體步驟:

◎第1步:通過構造傳參把需要加強的類傳過來。(你要裝修房子,肯定的先有房子吧。這個很好理解)

◎第2步:把具體需要增強的功能寫了

具體例子及代碼

寫一個MyBufferedReader類,使它能夠對字符流(如FileReader、InputStreamReader和PipedReader等)進行功能增強:

(1) 提供帶緩沖的myRead()方法,對原有的read()方法進行增速;

(2)提供一個能夠每次讀取一行字符的myReadLine()方法。

import java.io.FileReader;
import java.io.IOException;
/**
 * * 版本2: 增強FileReader類,使它具有如下功能:
 * (1) 提供帶緩沖的myRead()方法,對原有的read()方法進行增速;
  (2)提供一個能夠每次讀取一行字符的myReadLine()方法。
 */
public class MyBufferedReader {
  private char[] cbuf= new char[1024];//緩存
  private int pos=0; //當前讀取的位置
  private int count=0;//記錄緩存中當前的字符總數

  //封裝一個FileReader對象,幫助我們實現(xiàn)從文件中讀取一批數據
  private FileReader r = null;

  public MyBufferedReader(FileReader r) {
    super();
    this.r = r;
  }


  /**
   * 從緩存中讀取一個字符數據返回
   * @throws IOException 
   * @return所讀取的字符,如果到達文件末尾則返回-1
   */
  public int myRead() throws IOException{
    //從文件中把數據讀取到緩存buf[]中
    if(count<=0){
      //System.out.println("**********");
      count = r.read(cbuf);
      if(count==-1){
        return -1;
      }
      pos=0;
    }

    char ch = cbuf[pos];
    pos++;
    count--;
    return ch;
  }


  //回車字符: \r 13
  //換行字符: \n 10

  public String myReadLine() throws IOException{
    StringBuilder sb=new StringBuilder();
    int ch=0;
    //有回車換行符部分
    while( (ch=myRead())!=-1){ 
      if(ch=='\r'){
        continue;
      }
      if(ch=='\n'){
        return sb.toString();
      }
      sb.append((char)ch);
    }

    if(sb.length()!=0){//最后一行(沒有回車換行符)
      return sb.toString();
    }

    return null;//最后或空文件
  }


  public void close() throws IOException{
    r.close();
  }
}

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • Java?MyBatis是如何執(zhí)行一條SQL語句的

    Java?MyBatis是如何執(zhí)行一條SQL語句的

    這篇文章主要介紹了Java?MyBatis是如何執(zhí)行一條SQL語句的,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • Java如何把map分割成多個map

    Java如何把map分割成多個map

    這篇文章主要介紹了Java如何把map分割成多個map,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • 如何使用Jenkins構建GIT+Maven項目

    如何使用Jenkins構建GIT+Maven項目

    這篇文章主要介紹了如何使用Jenkins構建GIT+Maven項目,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • Java和C語言分別實現(xiàn)水仙花數及拓展代碼

    Java和C語言分別實現(xiàn)水仙花數及拓展代碼

    這篇文章主要介紹了分別用Java和C語言實現(xiàn)水仙花數,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • SpringCloud服務網關Gateway的使用教程詳解

    SpringCloud服務網關Gateway的使用教程詳解

    SpringCloud Gateway是Spring體系內的一個全新項目,它旨在為微服務架構提供一種簡單有效的統(tǒng)一的API路由管理方式。本文就來為大家詳細講講Gateway的使用教程,需要的可以參考一下
    2022-09-09
  • Struts2中圖片以base64方式上傳至數據庫

    Struts2中圖片以base64方式上傳至數據庫

    這篇文章主要介紹了Struts2中圖片以base64方式上傳至數據庫的實現(xiàn)代碼,代碼分為前臺和后臺兩段,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • @ControllerAdvice 用法解析

    @ControllerAdvice 用法解析

    @ControllerAdvice就是@Controller 的增強版,@ControllerAdvice主要用來處理全局數據,一般搭配@ExceptionHandler、@ModelAttribute以及@InitBinder使用,這篇文章主要介紹了@ControllerAdvice 用法,需要的朋友可以參考下
    2022-11-11
  • 關于swagger配置及踩坑@Api參數postion無效解決接口排序問題

    關于swagger配置及踩坑@Api參數postion無效解決接口排序問題

    這篇文章主要介紹了關于swagger配置及踩坑@Api參數postion無效解決接口排序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Spring中的事務傳播行為示例詳解

    Spring中的事務傳播行為示例詳解

    這篇文章主要給大家介紹了關于Spring中事務傳播行為的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • elasticsearch索引index之put?mapping的設置分析

    elasticsearch索引index之put?mapping的設置分析

    這篇文章主要為大家介紹了elasticsearch索引index之put?mapping的設置分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04

最新評論