「デザインモード」のデコレーションモード

2663 ワード

装飾器モード
装飾器モードには主に二つのキャラクターがあります。
  • 装飾器(ジャケット、帽子)
  • 装飾された対象(王さん)
  • 装飾器と装飾された対象は二つの特徴があり、装飾器のモードのキーでもあります。
  • 彼らは同じインターフェースを実現します。
  • 装飾器には、装飾されたオブジェクト
  • が使用されている。
    使用:
    /**
     * 

    * *

    * * @author aodeng- * @since 19-7-11 */ public interface Person { /** * * @return */ public Double cost(); /** * */ public void show(); }
    /**
     * 

    * ( ) *

    * * @author aodeng- * @since 19-7-11 */ public class LaoWang implements Person{ @Override public Double cost() { // , 0 return 0.0; } @Override public void show() { System.out.println(" "+this.cost()); } }
    /**
     * 

    * , Person : *

    * * @author aodeng- * @since 19-7-11 */ public abstract class ClothesDecorator implements Person{ /** * , */ protected Person person; public ClothesDecorator(Person person){ this.person=person; } }
    /**
     * 

    * , *

    * * @author aodeng- * @since 19-7-11 */ public class Jacket extends ClothesDecorator{ public Jacket(Person person){ /** * super ( ) */ super(person); } @Override public Double cost() { // return person.cost()+100; } @Override public void show() { person.show(); System.out.println(" 100, "+this.cost()); } }
    /**
     * 

    * , *

    * * @author aodeng- * @since 19-7-11 */ public class Hat extends ClothesDecorator{ public Hat(Person person){ // ( ) super(person); } @Override public Double cost() { return person.cost()+200; } @Override public void show() { person.show(); System.out.println(" 200, "+this.cost()); } }
    テスト
    /**
     * 

    * *

    * * @author aodeng- * @since 19-7-11 */ public class LearnMain { public static void main(String[] args) { // Person laoWang=new LaoWang(); // laoWang=new Jacket(laoWang); // laoWang=new Hat(laoWang); laoWang.show(); /* : 0.0 100, 100.0 200, 300.0*/ } }
    ソース
    ソースの住所:https://github.com/java-aoden...
    この文章は控えめなパンダの1文から多く操作して発表します!いらっしゃいませ、公衆番号:低調のレッサーパンダ