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