标签:nbsp 没有 类继承 字节 cte 存储 图片 fileinput row
1、I/O分类与装饰者模式
基本java I/O包含两种类型的流,字节流(inputStream、outputStream)与字符流(Writer,Reader),关于I/O操作类的设计,用到了装饰者模式,如下图所示。
其中FilterInputStream抽象类继承了InputStream抽象类,并且组合了InputStream类。
public class UpperCaseInputStream extends FilterInputStream { //继承InputStream
//组合InputStream protected UpperCaseInputStream(InputStream in) { super(in); } //重写方法 @Override public int read() throws IOException { int c=super.read(); return (c==-1?c:Character.toUpperCase(c)); } public static void main(String[] args) throws IOException { int c;
//使用时,仅需要将被装饰者作为参数,构建装饰者对象即可 InputStream in=new UpperCaseInputStream(new FileInputStream("D:\\JAVAworkspace\\ProgramTest\\src\\StreamDemo.java")); try { while((c=in.read())>=0) { System.out.print((char)c); } } finally{ in.close(); } } }
装饰者模式的使用场景:
(1)扩展后者附加另一个类的功能,可以随时撤销这个功能(不进行装饰),灵活性高。
(2)几种功能的随机组合叠加使用次数频繁时。(叠加使用装饰者类即可)
2、字节流与字符流的区别
标签:nbsp 没有 类继承 字节 cte 存储 图片 fileinput row
原文地址:https://www.cnblogs.com/simpleDi/p/11343142.html