java IO
2015-08-23 10:51 你吃不吃麦芽糖 阅读(141) 评论(0) 收藏 举报JAVA I/O 库的两个对称性
Java I/O库具有两个对称性,它们分别是:
- 输出-输入对称:比如InputStream和OutputStream各自占据Byte流的输入和输出的两个平行的等级结构的根部;而Reader和Writer各自占据Char流的输入与输出的两个平行的等级结构的根部。
- byte-char对称:InputStream与Reader的子类分别负责Byte和Char流的输入,OutputStream和Writer分别负责Byte和Char流的输出。他们分别形成平行的等级结构
装饰模式的各个角色
Java I/O是典型的装饰模式,下面说明InputStream类型装饰模式的各个角色是由哪些流处理器扮演的:
- 抽象构件(Component)角色:由InputStream扮演。这是一个抽象类,为各种子类型流处理器提供统一的接口。
- 具体构件(Concrete Component)角色:由ByteArrayInputStream、FileInputStream、PipedInputStream以及StringBufferInputStream等原始流处理器扮演。它们实现了抽象构件角色所规定的接口,可以被链接流处理器所装饰。
- 抽象装饰(Decorator)角色:由FilterInputStream扮演。它实现了InputStream所规定的接口。
- 具体装饰(Concrete Decorator)角色:由几个类扮演,分别是DataInputStream、BufferedInputStream以及两个不常用到的类LineNumberInputStream和PushbackInputStream。
OutputStream类型中的装饰模式:
- 抽象构件(Component)角色:由OutputStream扮演。这是一个抽象类,为各种子类型流处理器提供统一的接口。
- 具 体构件(Concrete Component)角色:由ByteArrayOutputStream、FileOutputStream、PipedOutputStream等原始流处理器扮演。它们实现了抽象构件角色所规定的接口,可以被链接流处理器所装饰。
- 抽象装饰(Decorator)角色:由FilterOutputStream扮演。它实现了OutputStream所规定的接口。
- 具体装饰(Concrete Decorator)角色:由几个类扮演,分别是BufferedOutputStream、DataOutputStream以及PrintStream。
Reader类型中的装饰模式:
- 抽象构件(Component)角色:由Reader扮演。这是一个抽象类,为各种子类型流处理器提供统一的接口。
- 具 体构件(Concrete Component)角色:由CharArrayReader、InputStreamReader、PipedReader以及StringReader等原始流处理器扮演。它们实现了抽象构件角色所规定的接口,可以被链接流处理器所装饰。
- 抽象装饰(Decorator)角色:由BufferedReader以及FilterReader扮演。这两者有着与Reader相同的接口,而这正是装饰类的关键。它们分别给出两个装饰角色的等级结构,第一个给出LineNumberReader作为具体装饰角色,另一个给出PushbackReader作为具体装饰角色。
- 具体装饰(Concrete Decorator)角色:如前所示,分别是LineNumberReader作为BufferedReader的具体装饰角色,另一个给出PushbackReader作为FilterReader的具体装饰角色。
Writer类型中的装饰模式:
- 抽象构件(Component)角色:由Writer扮演。这是一个抽象类,为各种子类型流处理器提供统一的接口。
- 具 体构件(Concrete Component)角色:由CharArrayWriter、OutputStreamWriter、PipedWriterr以及 StringWriter等原始流处理器扮演。它们实现了抽象构件角色所规定的接口,可以被链接流处理器所装饰。
- 抽象装饰 (Decorator)角色:由BufferedWriter以及FilterWriter以及PrintWriter扮演。这两者有着与Writer相同的接口,而这正是装饰类的 关键。
- 具体装饰(Concrete Decorator)角色:是与抽象装饰角色合并的。
浙公网安备 33010602011771号