[二十三]JavaIO之PushbackReader

 

功能簡介

 
PushBackReader容許將字符推回到流的字符流 reader
 
PushBackReader 是一個裝飾器模式最尋常的樣子
FilterReader 是抽象的裝飾器模式 Decoder
Reader是抽象構建 Component
PushbackReader是具體的裝飾器類 ConcreteDecoder
其餘的具體的Reader的子類,則是須要具體裝飾的對象
image_5b9a5ee6_2212
image_5b9a5ee6_4c6e
FilterReader就是爲了抽象的Decorator而存在的
它內部有一個Reader in 而後全部的其餘方法都是無差異的轉發到了in上
有興趣的能夠過去看下源碼(1.8 如此)
 
還記得PushBackInputStream中的原理麼?
內部維護了一個數組,用來保存記錄 被回退掉的數據
PushBackReader的原理也是同樣的
 
對照下字段就能夠發現端倪
image_5b9a5ee6_5b4f
 
 
同PushBackInputStream 同樣,他也是從後往前存放的
初始時,緩衝區爲空 pos == length
隨着元素的增長,pos的位置往前移動
 
緩衝區一旦寫滿,將會拋出異常
image_5b9a5ee6_902

總結

PushBackReader 與 PushBackInputStream實現的原理是同樣的
並且,並且,裏面的不少方法的代碼(jdk1.8下)
都是幾乎同樣的,都是幾乎同樣的,都是幾乎同樣的
 
本文說的有些粗,由於不少代碼邏輯同PushBackInputStream
因此有興趣的,請參看以前PushBackInputStream 的介紹
 
 
若是不想深刻,只須要清楚:
PushBackReader 是使用了裝飾器模式
內部有一個緩存區用來存儲被回退掉的內容
若是內容滿了不支持繼續回退寫緩存,會拋出異常 
 
讀取的時候先從這個回退的緩衝區中讀取數據,而後再考慮從流中讀取
相關文章
相關標籤/搜索