1. 程式人生 > >[二十三]JavaIO之PushbackReader

[二十三]JavaIO之PushbackReader

tran -a ref 從後往前 裝飾器模式 裝飾 數組 gray inpu

功能簡介

PushBackReader允許將字符推回到流的字符流 reader
PushBackReader 是一個裝飾器模式最尋常的樣子
FilterReader 是抽象的裝飾器模式 Decoder
Reader是抽象構建 Component
PushbackReader是具體的裝飾器類 ConcreteDecoder
其他的具體的Reader的子類,則是需要具體裝飾的對象
技術分享圖片
技術分享圖片
FilterReader就是為了抽象的Decorator而存在的
它內部有一個Reader in 然後所有的其他方法都是無差別的轉發到了in上
有興趣的可以過去看下源碼(1.8 如此)
還記得PushBackInputStream中的原理麽? 內部維護了一個數組,用來保存記錄 被回退掉的數據 PushBackReader的原理也是一樣的 對照下字段就可以發現端倪
技術分享圖片
同PushBackInputStream 一樣,他也是從後往前存放的 初始時,緩沖區為空 pos == length 隨著元素的增加,pos的位置往前移動
緩沖區一旦寫滿,將會拋出異常 技術分享圖片

總結

PushBackReader 與 PushBackInputStream實現的原理是一樣的 而且,而且,裏面的很多方法的代碼(jdk1.8下) 都是幾乎一樣的,都是幾乎一樣的,都是幾乎一樣的 本文說的有些粗,因為很多代碼邏輯同PushBackInputStream 所以有興趣的,請參看之前PushBackInputStream 的介紹 如果不想深入,只需要清楚: PushBackReader 是使用了裝飾器模式 內部有一個緩存區用來存儲被回退掉的內容 如果內容滿了不支持繼續回退寫緩存,會拋出異常
讀取的時候先從這個回退的緩沖區中讀取數據,然後再考慮從流中讀取

[二十三]JavaIO之PushbackReader