定義:元のファイルを変更して継承を使用することなく、オブジェクトの機能を動的に拡張します。ラッパーオブジェクト、つまり装飾を作成することにより、実際のオブジェクトをラップします。
特徴:
(1)装飾オブジェクトと実際のオブジェクトには同じインターフェイスがあります。このようにして、クライアントオブジェクトは、実際のオブジェクトと同じ方法で装飾的なオブジェクトと対話できます。
(2)装飾的なオブジェクトには、実際のオブジェクトへの参照が含まれています
(3)装飾的なオブジェクトは、クライアントからのすべての要求を受け入れます。これらの要求を実際のオブジェクトに転送します。
(4)装飾的なオブジェクトは、これらのリクエストを転送する前または後にいくつかの追加機能を追加できます。これにより、実行時に、特定のオブジェクトの構造を変更せずに、追加の機能を外部に追加できます。オブジェクト指向設計では、特定のクラスへの機能的な拡張は通常、継承によって達成されます。
エンタープライズレベルの開発と一般的に使用されるフレームワークのアプリケーション:IOストリーミング基礎アーキテクチャ
構成:
(1)抽象コンポーネントの役割:追加の責任を受け取る準備ができているオブジェクトを調節するための抽象インターフェイスを指定します。
(2)具体的なコンポーネントの役割:追加の責任を受け取るクラスを定義します。
(3)デコレーターの役割:コンポーネントオブジェクトのインスタンスを保持し、抽象コンポーネントインターフェイスと一致するインターフェイスを実装します。
(4)コンクリートデコレーターの役割:コンポーネントオブジェクトに追加の責任を追加する責任があります。
具体的な例:
/***装飾家の次の例*/public class demo {public static void main(string [] args){generichouse house = new Generichouse();ガレージガレージ=新しいガレージ(家); garage.dosomething();キッチンキッチン=新しいキッチン(家); kitchen.dosomething(); }}/***要約コンポーネントロール:特定の装飾の位置を調整するためのインターフェイスパブリックマスター(abstracthouse abstracthouse){this.abstracthouse = abstracthouse; } public void dosomething(){system.out.println( "装飾的な役割:装飾的な役割ホルダー、これが家の所有者です"); abstracthouse.dosomething(); }}/***特定のコンポーネントの役割:装飾する必要がある特定のオブジェクト*/class generichouseはabstracthouse {public void dosomething(){system.out.println( "特定のコンストラクターの役割:家に住むことができ、風と雨から避難することができます!"); }}/***特定の装飾的な役割:特定の装飾はここで行われ、装飾的な役割から継承されます。装飾的な役割は装飾的なオブジェクトを保持しているため、 *装飾的なオブジェクトも保持し、装飾することができます */classガレージはマスター{publicガレージ(abstractthouse abstracthouse){super(abstracthouse); } public void dosomething(){super.dosomething(); System.out.println( "特定の装飾的な役割:ここで装飾し、家の1つをガレージに飾り、家が車を保管できるようにします」); }}/***特定の装飾的な役割:特定の装飾はここで行われます。装飾的な役割は装飾的なオブジェクトを保持しているため、装飾的な役割から継承されます*したがって、装飾的なオブジェクトを保持し、マスター{パブリックキッチン(abstracthouse abstracthouse){super(abstracthouse); } public void dosomething(){super.dosomething(); System.out.println( "特定の装飾的な役割:ここで装飾し、家の1つをキッチンに飾り、家が料理できるようにします」); }}実際の開発では、パターンを装飾するパッケージング機能が大きな役割を果たします。元のオブジェクトを変更せずにオブジェクト上で他の操作を行うことができます。これにより、オブジェクトの変換が妨げられますが、同時に操作を適切に完了することができます。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。