实习之路2--设计模式之装饰者模式的理解(装饰IO流操作)

    和字面理解的差不多,装饰者模式就是用一个或多个类去扩展一个类的行为或状态,也就是扩展一个类的功能。相对于继承来说更加灵活。但要求装饰者和被装饰者要相同的超类型。

附上代码说明:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;

public class UpperInputstream extends FilterInputStream {

	public UpperInputstream(InputStream arg0) throws FileNotFoundException {
		super(arg0);
	}
	//扩展父类的read()方法,使得读取后的字符自动转换为大写模式
	public int read() throws IOException {
		//通过filter的read()方法读取一个字节的数据
		int c = super.read();
		//如若不是结尾,则将数据转换为大写字母
		return (c==-1?c:Character.toUpperCase(c));
	}	
}


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class Test {
	public static void main(String [] args) {
		int c;
		try {
			//读取test文本的数据进行输出测试
			InputStream in = new UpperInputstream(
					new FileInputStream("test.txt"));
			while((c = in.read())!= -1) {
				System.out.print((char)c);
			}
			in.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

test文件:

测试结果:

--麦子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值