java入門 -- 裝飾者設計模式

/*

* 當需要增強一個類的功能的時候,可以通過繼承的方式來實現(xiàn)。這種方式代碼結(jié)構(gòu)清晰易于實現(xiàn).

*

* 裝飾者設計模式:

* 作用:增強一個類的功能洪规,而且還可以讓裝飾類相互裝飾.

* 思想:裝飾者設計模式要讓這些裝飾類有一個共同的父類或者父接口蚜印,目的是為了讓這些裝飾類可以勾著給一個裝飾鏈達到相互裝飾的效果》

* 步驟:

* 1. 在裝飾類的內(nèi)部維護一個被維護類的引用;

* 2. 讓裝飾類有一個共同的父類或是父接口,讓裝飾類之間可以互相裝飾敷搪;

*

*/

//帶行號的緩沖輸入字符流

package com.michael.lin;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

class BufferedLineNum extends BufferedReader{

//1.在類的內(nèi)部維護一個被裝飾類的引用

BufferedReader bufferedReader;

int count = 1;

public BufferedLineNum(BufferedReader bufferedReader){

super(bufferedReader);

this.bufferedReader = bufferedReader;

}

//2.實現(xiàn)要增強的方法

public String readLine() throws IOException{

String line = bufferedReader.readLine();

if(line == null){

return null;

}

line = count + " " + line;

count++;

return line;

}

}

//帶分號的輸入字符流

class BufferedSem extends BufferedReader{

//1.維護一個被裝飾類的引用兴想;s

BufferedReader bufferedReader;

public BufferedSem(BufferedReader bufferedReader){

super(bufferedReader);

this.bufferedReader = bufferedReader;

}

//實現(xiàn)readLine方法

public String readLine() throws IOException{

String line = bufferedReader.readLine();

if(line==null){

return null;

}

line = line + ";";

return line;

}

}

//帶雙引號的輸入緩沖字符流

class BufferedQuto extends BufferedReader{

//構(gòu)建一個裝飾類的引用

BufferedReader bufferedReader;

public BufferedQuto(BufferedReader bufferedReader){

super(bufferedReader);

this.bufferedReader = bufferedReader;

}

//實現(xiàn)readLine方法

public String readLine() throws IOException{

String line = bufferedReader.readLine();

if(line==null){

return null;

}

line = "\"" + line + "\"";

return line;

}

}

public class Demo7 {

public static void main(String[] args) throws IOException{

File file = new File("c:\\data.txt");

FileReader fileReader = new FileReader(file);

//建立緩沖輸入字符流

BufferedReader bufferedReader = new BufferedReader(fileReader);

//帶行號的輸入緩沖字符流

String line = null;

BufferedLineNum bufferedLinenum = new BufferedLineNum(bufferedReader);

/*while((line=bufferedLinenum.readLine())!=null){

System.out.println(line);

}*/

//帶分號的輸入緩沖字符流

BufferedSem bufferedSem = new BufferedSem(bufferedLinenum);

/*while((line=bufferedSem.readLine())!=null){

System.out.println(line);

}*/

//帶行號、分好赡勘、雙引號的輸入緩沖字符流

BufferedQuto bufferedQuto = new BufferedQuto(bufferedSem);

while((line=bufferedQuto.readLine())!=null){

System.out.println(line);

}

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嫂便,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闸与,更是在濱河造成了極大的恐慌毙替,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件践樱,死亡現(xiàn)場離奇詭異厂画,居然都是意外死亡,警方通過查閱死者的電腦和手機拷邢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門袱院,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瞭稼,你說我怎么就攤上這事忽洛。” “怎么了环肘?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵欲虚,是天一觀的道長。 經(jīng)常有香客問我悔雹,道長苍在,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任荠商,我火速辦了婚禮,結(jié)果婚禮上续誉,老公的妹妹穿的比我還像新娘莱没。我一直安慰自己,他們只是感情好酷鸦,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布饰躲。 她就那樣靜靜地躺著,像睡著了一般臼隔。 火紅的嫁衣襯著肌膚如雪嘹裂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天摔握,我揣著相機與錄音寄狼,去河邊找鬼。 笑死,一個胖子當著我的面吹牛泊愧,可吹牛的內(nèi)容都是我干的伊磺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼删咱,長吁一口氣:“原來是場噩夢啊……” “哼屑埋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痰滋,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤摘能,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后敲街,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體团搞,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年聪富,在試婚紗的時候發(fā)現(xiàn)自己被綠了莺丑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡墩蔓,死狀恐怖梢莽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奸披,我是刑警寧澤昏名,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站阵面,受9級特大地震影響轻局,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜样刷,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一仑扑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧置鼻,春花似錦镇饮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嘶是,卻和暖如春钙勃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背聂喇。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工辖源, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓同木,卻偏偏與公主長得像浮梢,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子彤路,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎部分 基礎部分的順序:基本語法秕硝,類相關(guān)的語法,內(nèi)部類的語法洲尊,繼承相關(guān)的語法远豺,異常的語法,線程的語...
    子非魚_t_閱讀 31,631評論 18 399
  • 1 IO(二)No19 【 緩沖流:內(nèi)置了緩沖區(qū)坞嘀,對現(xiàn)有的流對象進行了封裝躯护,實現(xiàn)了高效的讀寫操作并增強了功能 ...
    征程_Journey閱讀 713評論 0 1
  • 一、流的概念和作用丽涩。 流是一種有順序的棺滞,有起點和終點的字節(jié)集合,是對數(shù)據(jù)傳輸?shù)目偝苫虺橄笫冈ā<磾?shù)據(jù)在兩設備之間的傳輸...
    布魯斯不吐絲閱讀 10,039評論 2 95
  • 小編費力收集:給你想要的面試集合 1.C++或Java中的異常處理機制的簡單原理和應用继准。 當JAVA程序違反了JA...
    八爺君閱讀 4,592評論 1 114
  • 今天看著高級班的各種信息,我自己也想起了走高級班的感覺矮男,而且今天莫名其妙的我也有種在走回來高級班的感覺移必。所有的事情...
    Lucie陸陸閱讀 154評論 0 0