裝飾模式——自己實現一個BufferedReader

package test;

import java.io.IOException;
import java.io.Reader;

public class MyBufferedReader extends Reader{
	private Reader r;
	MyBufferedReader(Reader r){
		this.r = r;
	}
	public String readLine() throws IOException{
		StringBuilder sb = new StringBuilder();
		int ch = 0;
		while((ch = r.read()) != -1){
			if(ch == '\r'){
				continue;
			}else if(ch == '\n'){
				return sb.toString();
			}else{
				sb.append((char)ch);
			}
		}
		if(sb.length() != 0){
			return sb.toString();
		}
		return null;
	}
	@Override
	public void close() throws IOException {
		// TODO 自動生成的方法存根
		r.close();
	}
	@Override
	public int read(char[] cbuf, int off, int len) throws IOException {
		// TODO 自動生成的方法存根
		return r.read(cbuf,off,len);
	}
}

tips:裝飾模式能夠加強一個類的功能,即對該類進行拓展。

與繼承相比,它減少了代碼的複雜性,更具有可拓展性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章