IO庫設計模式

IO庫設計模式

ID:40317914

大小:329.99 KB

頁數:10頁

時間:2019-07-31

IO庫設計模式_第1頁
IO庫設計模式_第2頁
IO庫設計模式_第3頁
IO庫設計模式_第4頁
IO庫設計模式_第5頁
資源描述:

《IO庫設計模式》由會員上傳分享,免費在線閱讀,更多相關內容在工程資料-天天文庫。

1、JavaI/O庫的兩個設計模式:Java的I/O庫總體設計是符合裝飾者模式(Decorator)跟適配器模式(Adapter)的。FileInputStream,FileOutputStream,DataInputStream及DataOutputStream都是流處理器的例子。?1 裝飾者模式:在由InputStream,OutputStream,Reader和Writer代表的等級結構內部,有一些流處理器可以對另一些流處理器起到裝飾作用,形成新的,具有改善了的功能的流處理器。裝飾者模式是JavaI/O庫的整體設計模式。這樣的一個原則是符合裝飾者模式的,如下圖

2、所示:2 適配器模式:在由InputStream,OutputStream,Reader和Writer代表的等級結構內部,有一些流處理器是對其它類型的流源的適配。這就是適配器模式的應用,如下圖所示?!  ∵m配器模式應用到了原始流處理器的設計上面,構成了I/O庫所有流處理器的起點。??三 裝飾模式的應用? 為什么不用繼承而用裝飾模式 JavaI/O庫需要很多性能的各種組合,如果說這些性能的組合是通過繼承方式來實現的話,那么每一種組合都需要一個類,這樣就會出現大量重復性問題的出現,從而使類數目“爆炸”。而如果采用裝飾模式,那么不僅類的數目大減少了,性能的重復也可以減

3、至到最少。所以裝飾模式是JavaI/O庫的基本模式?!∮捎谘b飾模式的引用,造成了靈活性和復雜都大大增加了,必須理解JavaI/O庫是由一些基本的原始流處理器和圍繞它們的裝飾流處理器所組成的,這樣可以在學習和使用JavaI/O庫時達到事半功倍的效果?!? 首先是InputStream類型中的裝飾模式: InputStream有七個直接的具體子類,有四個屬于FilterInputStream的具體子類,如下圖所示:  上圖中所有的類都叫做流處理器,這個圖就叫做(InputStream類型的)流處理器圖?! 「鶕斎肓鞯脑吹念愋停梢詫⑦@些流類分成兩種,即原始流類(O

4、riginalStream)和鏈接流處理器(WrapperStream)。?  原始流處理器  原始流處理器接收一個Byte數組對象,String對象,FileDiscriptor對象或者不同類型的流源對象,根據上面的圖,原始流處理器包括以下四種:  ByteArrayInputStream:為多線程的通信提供緩沖區(qū)操作功能,接收一個Byte數組作為流的源?! ileInputStream:建立一個與文件有關的輸入流。接收一個File對象作為流的源。  PipedInputStream:可以與PipedOutputStream配合使用,用于讀入一個數據管道的數

5、據,接收一個PipedOutputStream作為源?! tringBufferInputStream:將一個字符串緩沖區(qū)轉換為一個輸入流。接收一個String對象作為流的源。(JDK幫助文檔上說明:已過時。此類未能正確地將字符轉換為字節(jié)。從JDK1.1開始,從字符串創(chuàng)建流的首選方法是通過StringReader類進行創(chuàng)建。只有字符串中每個字符的低八位可以由此類使用。)?鏈接流處理器  所謂鏈接流處理器,就是可以接收另一個流對象作為源,并對之進行功能擴展的類。InputStream類型的鏈接處理器包括以下幾種,它們都接收另一個InputStream對象作為流源

6、。 ?。ǎ保〧ilterInputStream稱為過濾輸入流,它將另一個輸入流作為流源。這個類的子類包括以下幾種:  BufferedInputStream:用來從硬盤將數據讀入到一個內存緩沖區(qū)中,并從緩沖區(qū)提供數據?! ataInputStream:提供基于多字節(jié)的讀取方法,可以讀取原始類型的數據?! ineNumberInputStream:提供帶有行計數功能的過濾輸入流?! ushbackInputStream:提供特殊的功能,可以將已經讀取的字節(jié)“推回”到輸入流中?! 。ǎ玻㎡bjectInputStream可以將使用ObjectInputStre

7、am串行化的原始數據類型和對象重新并行化?! 。ǎ常㏒eqcueneInputStream可以將兩個已有的輸入流連接起來,形成一個輸入流,從而將多個輸入流排列構成一個輸入流序列?! 〕橄蠼Y構圖  按照上面的這種原始流處理器和鏈接流處理器的劃分,可以用下面的結構圖來描述它們之間的關系?! ? 上面的流處理器圖跟裝飾模式的結構圖有著顯而易見的相同之處。實際上InputStream類型的流處理器結構確實符合裝飾模式。  裝飾模式結構圖   對于上圖FilterInputStream查看JDK1.6源代碼,部分代碼如下:Java代碼??1.public?class?Fi

8、lterInputStr

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯系客服。
3. 下載前請仔細閱讀文檔內容,確認文檔內容符合您的需求后進行下載,若出現內容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯系客服處理。