装饰者模式

守給你的承諾、 提交于 2019-12-14 00:54:26

口诀:是你,还有你,一切拜托你
解释:
是你(继承被装饰的类),还有你(内部维护一个被装饰的类的对象),一切拜托你(主要方法还要使用该对象,在此基础上增强)
举个例子

//将BufferedReader装饰为 带行号的缓冲输入字符流,让它继承BufferedReader(是你)
class BufferedLineNum2  extends BufferedReader{  
	//在内部维护一个被装饰类的引用(还有你)
	BufferedReader bufferedReader;
	//记录行号
	int count = 1;
	//构造方法
	public BufferedLineNum2(BufferedReader bufferedReader){
		super(bufferedReader);// 注意: 该语句没有任何的作用,只不过是为了让代码不报错,因为父类BufferedReader没有无参构造方法
		this.bufferedReader = bufferedReader;
	}
	//增强readLine方法(一切摆脱你)
	public String readLine() throws IOException{
		String line = bufferedReader.readLine();
		if(line==null){
			return null;
		}
		line = count+" "+line;
		count++;
		return line;
	}
} 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!