Java的IO流的設計應用了設計模式中的裝飾模式。IO包括字節流和字符流,
字節流:一次讀入或讀出是8位二進制。
字符流:一次讀入或讀出是16位二進制。
字節流和字符流的原理是相同的,只不過處理的單位不同而已。後綴是Stream是字節流,而後綴是Reader,Writer是字符流。
Java標準庫的繼承關係和對應裝飾模式的的類,如下圖: 圖中: 1、InputStream和OutputStream是字節流的兩個基類,他們扮演着裝飾模式中的抽象構件的角色, 2、FileInputStream、StringBufferInputStream、ByteArrayInputStream和PipedInputStream是InputStream的子類,扮演着裝飾模式中的具體構件的角色, 3、FilterInputStream、ObjectInputStream和SequenceInputStream也是InputStream的子類,扮演着裝飾模式中的抽象裝飾的角色, 4、BufferedInputStream、DataInputStream和PushbakInputStream是FilterInputStream的子類,扮演着裝飾模式中的具體裝飾的角色。輸出流OutputStream的設計和InutStream是一樣的。