黑马程序员---装饰类设计模式

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------


装饰模式比继承要灵活,避免了集成体系的臃肿
而且降低了类与类之间的关系

装饰类因为增强已有对象,具备的功能和已有的对象是相同的,
只不过提供了更强的功能,所以装饰类和被装饰类都是属于一个体系中。

BufferedInputStreamm也是一个装饰类,下面是我自定义的一个BufferedInputStreamm类,

把read()方法按照我们的想法实现出来

class  MyBufferedInputStreamm
{
	private InputStream in;
//将InputStream对象传给装饰类
	MyBufferedInputStreamm(InputStream in)
	{
		this.in = in;
	}

	private int pos = 0;//定义一个指针,
	private int count = 0;//定义一个计数器
	private byte[] buf = new byte[1024];//定义一个字节数组

	public int myRead()throws IOException
	{
		if (count==0)//判断计数器为零时,数组中没有数据,需要往里面存储
		{
			count = in.read(buf);
			if (count<0)
			{
				return -1;
			}
			pos = 0;
			byte b = buf[pos];
			pos++;
			count--;
			return b&255;
		}
		else if (count>0)//判断数组中有对象,然后取出来,
					//同时指针指向下一个数据,计数器减一,表示数据减少一个
		{
			byte b = buf[pos];
			pos++;
			count--;
			return b&255;
		}
		return -1;
	}
	public void myClose()throws IOException
	{
		in.close();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值