チェックイン日 (2019-07-23)
学習ポイント
- 1.理解java IO系统
- 2.java 流的两种类型
- 3.java 流的分类
- 4.java IO流的处理逻辑
- 5.InputStream 类的层次
- 6.OutPutStream 类的层次
- 7.java IO流的链接
- 8.理解java IO的设计原则和设计模式
- 9.装饰模式
- 10.装饰模式 VS 继承
1. Java IO システムを理解する
I/O はその名の通り Input/Output 入力/出力であり、その参照クラスが私たちのプログラムであり、プログラムに内容を書き込むことが入力であり、プログラムから内容を書き出すことが出力です。
2. 2 種類の Java ストリーム
I/O ストリームは、バイト ストリームと文字ストリーム の 2 つのカテゴリに分けられます。下部では、すべての入力と出力はバイト ストリームです。
3. Java ストリームの分類
- ノード ストリーム: ディスクやファイルなどの特定の場所から読み書きするストリーム
- フィルター ストリーム: ノード ストリームを入力または出力として使用すると、既存の入力ストリームまたは出力ストリーム リンクを使用してフィルター ストリームが作成されます。
4. Java IO ストリームの処理ロジック
InputStream ロジック
- 1.open a stream (打开一个流)
- 2.while more information (循环读取信息)
- 3.read information (写入信息)
- 4.close stream (关闭信息)
OutputStream ロジック
- 1.open a stream
- 2.while more information
- 3.write information
- 4.close stream
5. InputStream クラスの階層
graph RL
A[FileInputStream]-->B[InputStream]
C[ByteArrayInputStream]-->B
D[FilterInputStream]--过滤流-->B
E[ObjectInputStream]-->B
F[PipedInputStream]-->B
G[SequenceInputStream]-->B
H[StringBufferInputStream]-->B
I[DataInputStream]-->D
J[BufferedInputStream]--缓冲流-->D
K[LineNumberInputStream]-->D
L[PushbackInputStream]-->D
6. OutPutStream クラスの階層
graph RL
B[FileOutputStream]-->A[OutputStream]
C[ByteArrayOutputStream]-->A
D[FilterOutputStream]--过滤流-->A
E[ObjectOutputStream]-->A
F[PipedOutputStream]-->A
H[DataOutputStream]-->D
I[BufferedOutputStream]--缓存-->D
G[PrintStream]-->D
7. Java IO ストリームのリンク
InputStream チェーン
graph TB
B[File]--文件中获取输入字节-->A[FileInputStream]
A--缓冲-->C[BufferedInputStream]
C--将字节转换成java基本类型-->D[DataInputStream]
D-->E[数据]
OutputStream チェーン
graph TB
B[数据]--往输出流中写入数据-->A[DataOutputStream]
A--将基本数据类型转换成字节并保存到缓存-->C[BufferedOutputStream]
C--从缓存中读取数据并写入流-->D[FileOutputStream]
D--将数据从流中写出到文件-->E[数据]
8. Java IO の設計原理と設計パターンを理解する
Java IO ライブラリは、チェーンと呼ばれるメカニズムを提供します。これにより、あるストリームを別のストリームの最後に接続して、ストリーム パイプのチェーンを形成できます。このパターンはデコレータパターンと呼ばれます。このモードにより、フローの機能を動的に高めることができます。
9.デコレーションモード
装飾モードは、透過的な方法でオブジェクトの機能を クライアントに拡張でき、継承のもう 1 つの代替手段です。オブジェクトにより多くの責任を動的に付加します。デコレータ モードには次の役割があります。
- 抽象コンポーネントの役割: 追加の責任が用意されているオブジェクトを標準化するために、抽象インターフェースが提供されます。
- 具体的なコンポーネント ロール: 追加の責任を受け取るクラスを定義し、抽象コンポーネント ロールのインターフェイスを実装します。
- 装飾的な役割: 抽象コンポーネント ロール オブジェクトへの参照を保持し、抽象コンポーネント インターフェイスと一致するインターフェイスを定義します。
- 特定の装飾の役割: コンポーネント オブジェクトに責任を付与する責任があります。
10. デコレータパターン VS 継承
違い | デコレータパターン | 継承する |
---|---|---|
目標 | 物体 | 親切 |
サブクラス | 不要 | クラス拡張には、サブクラスが必要です |
州 | 動的 | 静的コンパイル |
責任 | ランタイム割り当ての責任 | コンパイル時のディスパッチ責任 |
柔軟性 | フレキシブル | 多くのサブクラス、柔軟性の欠如 |