最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解

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

java 中設(shè)計(jì)模式(裝飾設(shè)計(jì)模式)的實(shí)例詳解

應(yīng)用場(chǎng)景

在不對(duì)原有對(duì)象類進(jìn)行修改的基礎(chǔ)上,給一個(gè)或多個(gè)已有的類對(duì)象提供增強(qiáng)額外的功能.

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

具體步驟:

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

◎第2步:把具體需要增強(qiáng)的功能寫了

具體例子及代碼

寫一個(gè)MyBufferedReader類,使它能夠?qū)ψ址?如FileReader、InputStreamReader和PipedReader等)進(jìn)行功能增強(qiáng):

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

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

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

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

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


  /**
   * 從緩存中讀取一個(gè)字符數(shù)據(jù)返回
   * @throws IOException 
   * @return所讀取的字符,如果到達(dá)文件末尾則返回-1
   */
  public int myRead() throws IOException{
    //從文件中把數(shù)據(jù)讀取到緩存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ǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 關(guān)于MyBatis各種SQL操作詳解

    關(guān)于MyBatis各種SQL操作詳解

    這篇文章主要介紹了關(guān)于MyBatis各種SQL操作詳解,MyBatis 是一款優(yōu)秀的半自動(dòng)的ORM持久層框架,它支持自定義 SQL、存儲(chǔ)過程以及高級(jí)映射,需要的朋友可以參考下
    2023-05-05
  • 使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改

    使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改

    最近項(xiàng)目需要在JPA中使用ID進(jìn)行批量更新,所以下面這篇文章主要給大家介紹了關(guān)于使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 基于Java ORM框架的使用詳解

    基于Java ORM框架的使用詳解

    本篇文章是對(duì)Java中ORM框架的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Spark-Sql入門程序示例詳解

    Spark-Sql入門程序示例詳解

    Spark?SQL?作為?Spark?四大核心組件之一,主要用于處理結(jié)構(gòu)化數(shù)據(jù)或半結(jié)構(gòu)化數(shù)據(jù),它支持在Spark?中使用?SQL?對(duì)數(shù)據(jù)進(jìn)行查詢,本文給大家介紹Spark-Sql入門程序,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • 基于Springboot一個(gè)注解搞定數(shù)據(jù)字典的實(shí)踐方案

    基于Springboot一個(gè)注解搞定數(shù)據(jù)字典的實(shí)踐方案

    這篇文章主要介紹了基于Springboot一個(gè)注解搞定數(shù)據(jù)字典問題,大致的方向是自定義注解,在序列化的時(shí)候進(jìn)行數(shù)據(jù)處理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • SpringCloud Config使用配置方法

    SpringCloud Config使用配置方法

    這篇文章給大家介紹SpringCloud Config使用及構(gòu)建配置中心的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • spring cloud-zuul的Filter使用詳解

    spring cloud-zuul的Filter使用詳解

    這篇文章主要介紹了spring cloud-zuul的Filter使用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Spring JDBCTemplate原理及使用實(shí)例

    Spring JDBCTemplate原理及使用實(shí)例

    這篇文章主要介紹了Spring JDBCTemplate原理及使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringCloud全局過慮器GlobalFilter的用法小結(jié)

    SpringCloud全局過慮器GlobalFilter的用法小結(jié)

    這篇文章主要介紹了SpringCloud全局過慮器GlobalFilter的使用,全局過慮器使用非常廣泛,比如驗(yàn)證是否登錄,全局性的處理,黑名單或白名單的校驗(yàn)等,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • SpringBoot如何解析應(yīng)用參數(shù)args

    SpringBoot如何解析應(yīng)用參數(shù)args

    文章主要介紹了SpringBoot啟動(dòng)過程中如何解析`main`函數(shù)中的參數(shù)`args`,包括如何解析命令行參數(shù)、訪問選項(xiàng)參數(shù)和非選項(xiàng)參數(shù),接著,介紹了`ApplicationArguments`接口及其方法,感興趣的朋友跟隨小編一起看看吧
    2024-11-11

最新評(píng)論

紫阳县| 左云县| 孝感市| 从江县| 固安县| 道真| 平邑县| 太和县| 宁津县| 鄂州市| 沙田区| 锡林郭勒盟| 昌都县| 兰溪市| 宾川县| 嘉义县| 锡林郭勒盟| 灵川县| 北安市| 绵竹市| 梨树县| 平顺县| 北流市| 阿鲁科尔沁旗| 江永县| 鲁山县| 万盛区| 凌源市| 师宗县| 台前县| 太仓市| 田东县| 义乌市| 桂林市| 县级市| 双鸭山市| 方城县| 灵石县| 宁明县| 青川县| 子长县|