この記事では主に Java デザインパターン学習における装飾モードの関連情報を詳しく紹介します。興味のある方は参考にしてください。
装飾モード: 追加要素をオブジェクトに動的に追加します。機能的には、装飾モードはサブクラスを生成するよりも柔軟です。
利点: 装飾クラスと装飾クラスは、相互に結合せずに独立して開発できます。装飾モードは、実装クラスの機能を動的に拡張できます。
短所: 多層装飾はより複雑です。
例: 人の服装を設定する
1: コード構造図
2: 人物クラス(ConcreteComponent)を作成する
package DecoratorModel; /** * 2017-10-9 10:39:09 * 装饰器设计模式 * Person 类 ConcreteComponent * @author 我不是张英俊 * */ public class Person { public Person(){} private String name; public Person(String name){ this.name=name; } public void Show(){ System.out.println("装扮的"+name); } }
3: 服装クラス
package DecoratorModel; /** *服饰类(Decorator) * @author 我不是张英俊 * */ public class Finery extends Person{ protected Person component; //打扮 public void Decorate(Person component){ this.component=component; } public void Show(){ if(component!=null){ component.Show(); } } }
4: 特定の服装カテゴリ
public class Tshirts extends Finery { public void Show(){ System.out.println("大T恤"); super.Show(); } } public class BigTrouser extends Finery { public void Show(){ System.out.println("垮裤"); super.Show(); } } public class Sneakers extends Finery { public void Show(){ System.out.println("破球鞋"); super.Show(); } } public class Suit extends Finery { public void Show(){ System.out.println("西装"); super.Show(); } } public class Tie extends Finery { public void Show(){ System.out.println("领带"); super.Show(); } } public class LeatherShoes extends Finery { public void Show(){ System.out.println("皮鞋"); super.Show(); } }
5: テストカテゴリ
public class test { public static void main(String[] args) { Person xc=new Person("旺财"); Sneakers pqx=new Sneakers(); BigTrouser kk=new BigTrouser(); Tshirts dtx=new Tshirts(); pqx.Decorate(xc); kk.Decorate(pqx); dtx.Decorate(kk); dtx.Show(); } }
6: コンソール
ビッグTシャツ
バッグパンツ
壊れたスニーカー
繁栄のためにドレスアップ
以上がJava デコレーション モードの学習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。