概要
装飾モードは、クライアントに透明な方法でオブジェクトを拡張する機能であり、相続関係に代わるものです。言い換えれば、クライアントは、装飾の前後にオブジェクトに違いがあるとは考えていません。装飾モードは、より多くのサブクラスを作成せずにオブジェクトの機能を拡張できます。装飾モードの鍵は、この拡張が完全に透明であることです。
パターンの構造
UMLクラス図:
装飾モードの文字:
要約コンポーネントロール(プロジェクト):追加の責任を受ける準備ができているオブジェクトを調整するインターフェイスを提供します。
特定のコンポーネントの役割(Employe):追加の責任を受けるクラスを定義します
装飾的な役割(マネージャー):コンポーネントオブジェクトのインスタンスを保持し、抽象コンポーネントインターフェイスと一致するインターフェイスを定義します
特定の装飾的な役割(Managera、ManagerB):コンポーネントオブジェクトに対する追加の責任を「固定」する責任
コードの例
パッケージインタビュー; interface project {void docoding();} class employeを実装する{@override public void docoding(){system.out.println( "Engineering is Programming ..."); }}クラスマネージャーはProject {private Project Project;パブリックマネージャー(プロジェクトプロジェクト){this.project = project; } @Override public void docoding(){startnewwork(); project.docoding(); } public void startnewwork(){}} class managlea extends manager {public managlea(project project){super(project); } @Override public void startnewwork(){system.out.println( "開発マネージャーが新しい作業計画を開始する"); }} class managleb extends manager {public managleb(project project){super(project); } @Override public void startnewwork(){system.out.println( "テストマネージャーが新しい作業計画を開始する"); }} public class maintest {public static void main(string arg []){project project = new Employe(); Project Managera = new Managera(Project); Project ManagerB = new ManagerB(Project); Managera.docoding(); Managerb.docoding(); }}装飾モードの利点と短所:
アドバンテージ:
装飾モードと継承の目的は、オブジェクトの機能を拡張することですが、装飾モードは継承よりも柔軟性を提供できます。装飾モードにより、システムは必要な「装飾」を「貼り付ける」ことを動的に決定することができ、継承関係は異なります。継承関係は静的であり、システムが実行される前に決定されます。
これらの装飾カテゴリの異なる特定の装飾カテゴリと組み合わせを使用することにより、デザイナーは行動のさまざまな組み合わせを作成できます。
欠点:
装飾的なパターンを使用しているため、継承関係を使用するよりも、必要なクラスの数が少なくなる可能性があります。より少ないクラスを使用すると、確かにデザインの実行が容易になります。ただし、一方、装飾パターンを使用すると、継承関係を使用するよりも多くのオブジェクトが生成されます。より多くのオブジェクトが間違いを困難にする可能性があります。特に、それらはすべて似ているように見えるためです。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。