裝飾模式

demo事例:用裝飾模式編寫給人裝飾比如穿衣、庫、鞋等程序

Persion.java

/**
 * 人
 * @author Persion
 *
 */
public class Persion {

    private String name;    
    public Persion(){}    
    public Persion(String name){    
        this.name = name;
    }
    public void show(){
        System.err.print("裝扮:"+name+"            ");
    }
}

Finery.java

  public class Finery extends Persion{

    protected Persion persion;
    public void Decorate(Persion persion){
        this.persion=persion;
    }
    public void show(){
        if(persion != null){
            persion.show();
        }
    }
}

BigTrouser .java

public class BigTrouser extends Finery {
    @Override
    public void show(){
        System.out.print("褲子        ");
        persion.show();
    }
}

TShrts .java

public class TShrts extends Finery{
    
    @Override
    public void show(){
        System.out.print("大T恤        ");
        persion.show();
    }
    
}

Test .java

/**
 * 裝飾模式
 * @author lucksheep
 *
 */
public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        
        Persion persion=new Persion("小肥羊");
        
        TShrts shrts=new TShrts();
        BigTrouser bt=new BigTrouser();
        
        shrts.Decorate(persion);
        bt.Decorate(shrts);
        
        bt.show();
    }
}

裝飾模式總結下:

1、一般呢就是把類中的裝飾功能搬移出去,簡化原有的類。
2、有效的把類的核心職責和裝飾的功能分開,并且可以去除相關類中重復的裝飾邏輯

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 裝飾模式的定義是:裝飾模式又名包裝(Wrapper)模式。裝飾模式以對客戶端透明的方式擴展對象的功能,是繼承關系的...
    li_jun閱讀 2,124評論 2 0
  • 定義 裝飾者模式動態的將功能加到對象上,若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。 幾個要點 裝飾者和被...
    LeaYw閱讀 379評論 2 4
  • 裝飾模式用于在不改變原類的情況下,擴展一個類的功能,這種擴展是動態的,動態的為一個對象增加功能,而且還動態撤銷功能...
    黑白咖閱讀 225評論 0 0
  • 最近又開始學習java的設計模式,實際上應該不是又開始,而是以前學習的不夠,現在準備深刻的學習一下,以便在工作中能...
    huiquan閱讀 264評論 0 0
  • 用料 : 胡蘿卜 黃瓜 火腿腸 雞蛋 紫菜 米飯 鹽 糖 西蘭花 米醋 步驟 1 準備好材料 步驟 2 將雞蛋打入...
    創業夢想巔峰閱讀 241評論 0 1