Java設計模式之外觀模式示例

roc_guo發表於2022-09-05
1.什麼是外觀模式

當一個使用者類需要和某個系統中的多個子系統打交道時,為了避免該類和子系統中的類產生過多的依賴關係,可以採用外觀模式。外觀模式,為這些子系統提供一個外觀類進行功能的封裝,外觀類負責和子系統中的類打交道,使用者類和外觀類打交道,簡化了使用者類和子系統進行互動和依賴。

2.如何實現

1)子系統,是若干個類的集合,這些類協同為使用者提供所需的功能,子系統中的任何類都不包含外觀類的引用

2)外觀類(Facade),該類包含子系統中全部或部分類的例項引用。外觀類可以替代子系統中的類和使用者打打交道。

3.程式碼實現

以一個廣告系統做案例,該系統包含CheckWord,Charge,TypeSeting三個子類。

AdFacade是這個子系的外觀類,負責和使用者類進行互動,並呼叫子系統中的功能實現使用者需求。

1)子系統CheckWord
/**
 * 子系統1
 * 廣告檢查系統
 * 完成廣告字數計算
 */
public class CheckWord {
    int amount;
    String ad;
    public CheckWord (String ad){
        this.ad = ad;
    }
    /**
     * 計算廣告字數,按字數收費
     * @return
     */
    public int setAmout( ){
        System.out.println("計算廣告字數");
        amount = ad.length();
        return amount;
    }
}
2)Charge
/**
 * 子系統2
 * 計算廣告價格
 */
public class Charge {
    CheckWord word;
    public int price;
    public Charge(CheckWord word){
        this.word = word;
    }
    public int giveCharge( ){
        //計算廣告價格
        System.out.println("計算價格");
        price = word.amount*100;
        return price;
    }
}
3)TypeSetting
/**
 * 子系統3
 * 廣告排版
 */
public class TypeSetting {
    private String ad;
    public TypeSetting(String ad){
        this.ad = ad;
    }
    public void typeSetting(){
        System.out.println("廣告排版");
    }
}
4)外觀類
/**
 * 外觀類
 * 包含子系統中全部或部分類。
 * 這個類替代子系統和使用者類打交道,
 * 所有使用者想要完成的功能由這個類進行呼叫,
 * 避免了使用者類和子系統過多的依賴。
 */
public class AdFacade {
    private CheckWord checkWord;
    private Charge charge;
    private TypeSetting typeSetting;
    public AdFacade(String ad){
        this.checkWord = new CheckWord(ad);
        this.charge = new Charge(checkWord);
        this.typeSetting = new TypeSetting(ad);
    }
    /**
     * 完成使用者釋出廣告的任務
     */
    public void finishAdTask(){
        checkWord.setAmout();
        charge.giveCharge();
        typeSetting.typeSetting();
    }
}
5)測試類
public class Main {
    public static void main(String args[]){
        String ad ="hello world";
        AdFacade adFacade = new AdFacade(ad);
        adFacade.finishAdTask();
    }
}
public class Main {
    public static void main(String args[]){
        String ad ="hello world";
        AdFacade adFacade = new AdFacade(ad);
        adFacade.finishAdTask();
    }
}

到此這篇關於Java設計模式之外觀模式示例詳解的文章就介紹到這了


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2913386/,如需轉載,請註明出處,否則將追究法律責任。

相關文章