IO流中的设计模式

JavaIO流设计到的设计策略和设计模式

Java的IO流库提供了一种链接(Chaining)机制,可以将一个流处理器跟另一个流处理器首位相连,以其中之一的输出作为另一个的输入而形成一个流管道链接。比如,常见的new DataInputStream(new FileInputStream(file))就是把FileInputStream流当作DataInputStream流的管道链接。

其次,对于Java IO流还涉及一种对称性的设计策略,其表现为输入输出对称性(如InputStream和OutputSteam的字节输入输出操作)和字节字符的对称性(InputStream和Reader的字节字符输入操作,OutputStream和Writer的字节字符输出操作)。

IO流涉及的装饰者设计模式:

FileInputStream inputStream=new FileInputStream(file);
//把inputStream装饰成BufferedReader来成为具备缓冲能力的reader
BufferedReader reader=new BufferedReader(inputStreamReader);

IO流涉及的适配器设计模式

FileInputStream fileInput=new FileInputStream(file);
//把fileInput文件字节流,通过适配器(InputStreamReader转换流)变为字符流
InputStreamReader input=new InputStreamReader(fileInput);

装饰者模式:给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例(各种字符流键装饰,各种字节流间装饰)。

适配器模式:有时候我们需要实现一个接口,但那个接口可能有很多抽象方法,我们只需要其中一个或多个方法。这时候我们可以创建一个类(适配器)实现接口,并重写接口中所有方法(空方法,有方法体,但方法体中无内容)。当我们需要接口中的某个方法时,只需继承类似于适配器的类 ,然后重写对应的方法即可。  将某个类的接口转换成我们期望的另一个接口表示,目的是消除由于接口不匹配所造成类的不兼容问题(字符流与字节流间互相适配)。


       每日鸡汤:太在意别人的看法,最后会有两种结局:要么自己累死,要么让别人整死。

Over!

你可能感兴趣的:(IO流)