裝飾模式

demo事例:用裝飾模式編寫(xiě)給人裝飾比如穿衣、庫(kù)、鞋等程序

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();
    }
}

裝飾模式總結(jié)下:

1、一般呢就是把類(lèi)中的裝飾功能搬移出去,簡(jiǎn)化原有的類(lèi)。
2、有效的把類(lèi)的核心職責(zé)和裝飾的功能分開(kāi),并且可以去除相關(guān)類(lèi)中重復(fù)的裝飾邏輯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 裝飾模式的定義是:裝飾模式又名包裝(Wrapper)模式。裝飾模式以對(duì)客戶(hù)端透明的方式擴(kuò)展對(duì)象的功能,是繼承關(guān)系的...
    li_jun閱讀 2,207評(píng)論 2 0
  • 定義 裝飾者模式動(dòng)態(tài)的將功能加到對(duì)象上,若要擴(kuò)展功能,裝飾者提供了比繼承更有彈性的替代方案。 幾個(gè)要點(diǎn) 裝飾者和被...
    LeaYw閱讀 404評(píng)論 2 4
  • 裝飾模式用于在不改變?cè)?lèi)的情況下,擴(kuò)展一個(gè)類(lèi)的功能,這種擴(kuò)展是動(dòng)態(tài)的,動(dòng)態(tài)的為一個(gè)對(duì)象增加功能,而且還動(dòng)態(tài)撤銷(xiāo)功能...
    黑白咖閱讀 239評(píng)論 0 0
  • 最近又開(kāi)始學(xué)習(xí)java的設(shè)計(jì)模式,實(shí)際上應(yīng)該不是又開(kāi)始,而是以前學(xué)習(xí)的不夠,現(xiàn)在準(zhǔn)備深刻的學(xué)習(xí)一下,以便在工作中能...
    huiquan閱讀 292評(píng)論 0 0
  • 用料 : 胡蘿卜 黃瓜 火腿腸 雞蛋 紫菜 米飯 鹽 糖 西蘭花 米醋 步驟 1 準(zhǔn)備好材料 步驟 2 將雞蛋打入...
    創(chuàng)業(yè)夢(mèng)想巔峰閱讀 296評(píng)論 0 1

友情鏈接更多精彩內(nèi)容