java 裝飾者模式

2021-08-15 08:13:42 字數 2325 閱讀 9295

1.裝飾者模式

思想: 可以通過裝飾 對原來的功能進行公升級

例如:bufferedoutputstream 傳入的引數是 fileoutputstream

相當於把fileoutputstream裝飾了 裝飾後 功能得到提公升 寫入效率提高

裝飾者模式流程:

(1).把被裝飾者寫成成員變數

(2).構造方法中 給該成員變數賦值

(3).對原有功能公升級

裝飾者模式的好處:

高內聚(類中的方法之間的聯絡做好緊密)

低耦合(解耦)(類和類之間 盡量不要產生聯絡)

//利用裝飾者模式實現linenumberreader

class mylinenumberreader

public

void

setnum(int num)

//構造方法中 給該成員變數賦值

public

wllinenumberreader()

public

wllinenumberreader(reader reader)

//對原有功能公升級

//從讀位元組 到讀行

public string myread() throws ioexceptionelse

}//讀完了 沒內容可拼接了

if(sb.length() == 0)

return sb.tostring();

//關閉資源

public

void

myclose() throw ioexception

}

2.跟蹤行號的緩衝字元輸入流linenumberreader

特點:能跟蹤行號

// 寫個方法看一下它的功能

public

static

void

fun1() throws filenotfoundexception, ioexception

lnr.close();

}

}

3.列印流(只能輸出)

(1)只能作為資料的目的地

(2)可以把資料原樣輸出

(3)永遠不會丟擲io異常

但是 會丟擲其他異常 例如空指標

(4)列印流相當於 可以給其他的流物件 裝飾乙個 原樣輸出的功能

printstream(位元組輸出)

構造方法可接收的引數:1.檔案(file)2.檔案輸出流(outputstream)3.檔案路徑

printwriter(字元輸出)

system.in 是 bufferinputstream 緩衝輸入位元組流

作品:接收鍵盤輸入的內容

system.out 是 printstream 列印輸出位元組流

作用:輸出內容到控制台

//建立列印字元流

file file = new file("/users/lanou/desktop/test/haha.txt");

printwriter pw = new printwriter(file);

pw.print("haha");

pw.println

(200);

pw.println(false);

pw.flush();

pw.close();

//建立列印位元組流

file file = new file("/users/lanou/desktop/test/haha.txt");

fileoutputstream fos = new fileoutputstream(file);

// 建立緩衝位元組輸出流

bufferedoutputstream bos = new bufferedoutputstream(fos);

//建立乙個列印位元組流

printstream ps = new printstream(bos);

//寫資料

ps.println("wanglong");

ps.println(true);

ps.print

(100);

ps.write(100);

ps.print('p');

//關閉資源

ps.close();

//使用system.in 讀取從鍵盤輸入的資料

public static void main(string args) throws ioexception

len = in.read();

if(len == '\n')else

}}

java裝飾者模式

1 定義 動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。2 描述 由 抽象構件角色 定義乙個抽象介面,來規範準備附加功能的類 具體構件角色 將要被附加功能的類,實現抽象構件角色介面 抽象裝飾者角色 持有對具體構件角色的引用並定義與抽象構件角色一致的介面 和 具體裝...

Java 裝飾者模式

裝飾者模式 課題 星巴茲咖啡 beverage 飲料 condiment 調料 開發 關閉原則 類應該對擴充套件開放,對修改關閉。定義裝飾者模式 裝飾者模式 動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。飲料抽象類 public abstract class be...

java裝飾者模式

意圖 動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活。因為參考網上說法都不太一樣,故按照我理解的意思描述下裝飾者模式,以希望給後來者一些稍微的指引 通俗地說就是包裝物件,在不影響其他物件的情況下,動態,透明地給單個物件新增一些功能 裝飾模式就是給乙個物...