このステートメントは、オブジェクト指向プログラミングの観点から何を意味しますか
オブジェクトを装飾して、機能を簡単に追加/削除できるようにします。
このステートメントは、オブジェクト指向プログラミングの観点から何を意味しますか
オブジェクトを装飾して、機能を簡単に追加/削除できるようにします。
良い oops 設計は、オープン クローズの原則に基づいています。オープンとは、クラスが拡張のために開かれている必要があることを意味し、クローズとは、変更のためにクラスが閉じられていることを意味します。
デコレーター パターンはこの原則を使用して、ラッパーを作成する必要があるクラスの機能を拡張します。
IMO パターンを学習する最善の方法は、標準実装で検索することですjava io
。パッケージが同じパターンで構築されていることがわかります。
java.IO パッケージには、
FileInputStream、StringBufferInputStream、ByteArrayInputStream
基本クラス InputStream を拡張するクラス。これらのクラスは、デコレータ クラスによって装飾することができます。
Java.IO パッケージを使用したことがある場合は、装飾された InputStream である BufferedInputStream を使用したことがあるはずです。
.
デコレーター パターンは基本的に、サブクラスがメソッドをオーバーライドし、オーバーライドされたメソッドをスーパークラスで呼び出し (したがって機能を失うことはありません)、独自の追加コードを実行して、機能をデコレート (装飾) します。
この手法を使用し、常に抽象型を使用してオブジェクトを参照することにより ( Liskov Substitution Principleを参照)、必要な追加機能を提供する具象クラスをクライアントに提供することで、拡張機能を簡単に交換できます。
どのクラスを使用するかは、実行時またはコンパイル時に決定できます ( Abstract Factory パターンを参照) 。