装饰设计模式

装饰设计模式

 当想对已有的对象进行功能增强时,可以自定义类,将已有对象传入,基于已有的功能,并提供加强功能。那么自定义的类成为装饰类

装饰类通常会通过构造方法接收被装饰的对象。
并基于被装饰的对象的功能,提供更强的功能。


继承与装饰的区别

 当一个抽象类有很多的子类,需要为每个子类都增强一些功能时,

如果为每一个子类都定义一个子类,会使继承体系变的相当复杂,而且不利于扩展

而如果是用装饰类的话,可以单独定义一个功能增强装饰类,将需要增强功能的子类传递进来就可以了,简化了继承体系


 装饰类比继承更灵活,降低了类与类之间的关系

 装饰类通常与被装饰类属于一个体系


自定义一个字符缓冲流:

class MyBufferedReader extends Reader
{
	Reader r;
	public MyBufferedReader(Reader r)
	{
		this.r=r;
	}
	public String MyreadLine() throws IOException
	{
		StringBuilder s = new StringBuilder();
		int c;
		while((c=r.read())!=-1)
		{
			if(c=='\r')
				continue;
			if(c=='\n')
				return s.toString();
			s.append((char)c);
		}
		if(s.length()!=0)
			return s.toString();
		return null;
	}
	public void myclose() throws IOException
	{
		r.close();
	}
	@Override
	public void close() throws IOException {
		r.close();
	}
	@Override
	public int read(char[] arg0, int arg1, int arg2) throws IOException {
		return r.read(arg0, arg1, arg2);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值