欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設(shè)計(jì)模式之外觀模式示例詳解

 更新時(shí)間:2022年08月27日 14:09:40   作者:niuyongzhi  
外觀模式為多個(gè)復(fù)雜的子系統(tǒng),提供了一個(gè)一致的界面,使得調(diào)用端只和這個(gè)接口發(fā)生調(diào)用,而無須關(guān)系這個(gè)子系統(tǒng)內(nèi)部的細(xì)節(jié)。本文將通過示例詳細(xì)為大家講解一下外觀模式,需要的可以參考一下

1.什么是外觀模式

當(dāng)一個(gè)用戶類需要和某個(gè)系統(tǒng)中的多個(gè)子系統(tǒng)打交道時(shí),為了避免該類和子系統(tǒng)中的類產(chǎn)生過多的依賴關(guān)系,可以采用外觀模式。外觀模式,為這些子系統(tǒng)提供一個(gè)外觀類進(jìn)行功能的封裝,外觀類負(fù)責(zé)和子系統(tǒng)中的類打交道,用戶類和外觀類打交道,簡化了用戶類和子系統(tǒng)進(jìn)行交互和依賴。

2.如何實(shí)現(xiàn)

1)子系統(tǒng),是若干個(gè)類的集合,這些類協(xié)同為用戶提供所需的功能,子系統(tǒng)中的任何類都不包含外觀類的引用

2)外觀類(Facade),該類包含子系統(tǒng)中全部或部分類的實(shí)例引用。外觀類可以替代子系統(tǒng)中的類和用戶打打交道。

3.代碼實(shí)現(xiàn)

以一個(gè)廣告系統(tǒng)做案例,該系統(tǒng)包含CheckWord,Charge,TypeSeting三個(gè)子類。

AdFacade是這個(gè)子系的外觀類,負(fù)責(zé)和用戶類進(jìn)行交互,并調(diào)用子系統(tǒng)中的功能實(shí)現(xiàn)用戶需求。

1)子系統(tǒng)CheckWord

/**
 * 子系統(tǒng)1
 * 廣告檢查系統(tǒng)
 * 完成廣告字?jǐn)?shù)計(jì)算
 */
public class CheckWord {
    int amount;
    String ad;
    public CheckWord (String ad){
        this.ad = ad;
    }
    /**
     * 計(jì)算廣告字?jǐn)?shù),按字?jǐn)?shù)收費(fèi)
     * @return
     */
    public int setAmout( ){
        System.out.println("計(jì)算廣告字?jǐn)?shù)");
        amount = ad.length();
        return amount;
    }
}

2)Charge

/**
 * 子系統(tǒng)2
 * 計(jì)算廣告價(jià)格
 */
public class Charge {
    CheckWord word;
    public int price;
    public Charge(CheckWord word){
        this.word = word;
    }
    public int giveCharge( ){
        //計(jì)算廣告價(jià)格
        System.out.println("計(jì)算價(jià)格");
        price = word.amount*100;
        return price;
    }
}

3)TypeSetting

/**
 * 子系統(tǒng)3
 * 廣告排版
 */
public class TypeSetting {
    private String ad;
    public TypeSetting(String ad){
        this.ad = ad;
    }
    public void typeSetting(){
        System.out.println("廣告排版");
    }
}

4)外觀類

/**
 * 外觀類
 * 包含子系統(tǒng)中全部或部分類。
 * 這個(gè)類替代子系統(tǒng)和用戶類打交道,
 * 所有用戶想要完成的功能由這個(gè)類進(jìn)行調(diào)用,
 * 避免了用戶類和子系統(tǒng)過多的依賴。
 */
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);
    }
    /**
     * 完成用戶發(fā)布廣告的任務(wù)
     */
    public void finishAdTask(){
        checkWord.setAmout();
        charge.giveCharge();
        typeSetting.typeSetting();
    }
}

5)測(cè)試類

public class Main {
    public static void main(String args[]){
        String ad ="hello world";
        AdFacade adFacade = new AdFacade(ad);
        adFacade.finishAdTask();
    }
}

到此這篇關(guān)于Java設(shè)計(jì)模式之外觀模式示例詳解的文章就介紹到這了,更多相關(guān)Java外觀模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談java是如何做資源回收補(bǔ)救的

    淺談java是如何做資源回收補(bǔ)救的

    這篇文章主要介紹了淺談java是如何做資源回收補(bǔ)救的,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java中List與數(shù)組之間的相互轉(zhuǎn)換

    Java中List與數(shù)組之間的相互轉(zhuǎn)換

    在日常Java學(xué)習(xí)或項(xiàng)目開發(fā)中,經(jīng)常會(huì)遇到需要int[]數(shù)組和List列表相互轉(zhuǎn)換的場(chǎng)景,然而往往一時(shí)難以想到有哪些方法,最后可能會(huì)使用暴力逐個(gè)轉(zhuǎn)換法,往往不是我們所滿意的,下面這篇文章主要給大家介紹了關(guān)于Java中List與數(shù)組之間的相互轉(zhuǎn)換,需要的朋友可以參考下
    2023-05-05
  • Java合并兩個(gè)及以上有序鏈表的示例詳解

    Java合并兩個(gè)及以上有序鏈表的示例詳解

    這篇文章主要通過兩個(gè)例題為大家介紹一下Java合并兩個(gè)及以上有序鏈表的實(shí)現(xiàn)方法,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,需要的可以參考一下
    2022-11-11
  • Java中實(shí)現(xiàn)Comparable和Comparator對(duì)象比較

    Java中實(shí)現(xiàn)Comparable和Comparator對(duì)象比較

    這篇文章主要針對(duì)Java中Comparable和Comparator對(duì)象進(jìn)行比較,感興趣的小伙伴們可以參考一下
    2016-02-02
  • java利用phantomjs進(jìn)行截圖實(shí)例教程

    java利用phantomjs進(jìn)行截圖實(shí)例教程

    PlantomJs是一個(gè)基于javascript的webkit內(nèi)核無頭瀏覽器 也就是沒有顯示界面的瀏覽器,你可以在基于 webkit 瀏覽器做的事情,它都能做到。下面這篇文章主要給大家介紹了關(guān)于java利用phantomjs進(jìn)行截圖的相關(guān)資料,需要的朋友可以參考下
    2018-10-10
  • Java 添加、刪除、替換、格式化Word中的文本的步驟詳解(基于Spire.Cloud.SDK for Java)

    Java 添加、刪除、替換、格式化Word中的文本的步驟詳解(基于Spire.Cloud.SDK for Java)

    這篇文章主要介紹了Java 添加、刪除、替換、格式化Word中的文本(基于Spire.Cloud.SDK for Java),本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java過濾器Filter的基本使用教程

    Java過濾器Filter的基本使用教程

    過濾器通常對(duì)一些web資源進(jìn)行攔截,做完一些處理器再交給下一個(gè)過濾器處理,直到所有的過濾器處理器,再調(diào)用servlet實(shí)例的service方法進(jìn)行處理。本文將通過示例為大家講解Java中過濾器Filter的用法與實(shí)現(xiàn),需要的可以參考一下
    2023-02-02
  • Java線程安全和鎖Synchronized知識(shí)點(diǎn)詳解

    Java線程安全和鎖Synchronized知識(shí)點(diǎn)詳解

    在本篇文章里小編給大家分享的是關(guān)于Java線程安全和鎖Synchronized相關(guān)知識(shí)點(diǎn),有需要的朋友們可以參考下。
    2019-08-08
  • SpringSecurity整合Jwt過程圖解

    SpringSecurity整合Jwt過程圖解

    這篇文章主要介紹了SpringSecurity整合Jwt過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • idea 隱藏target,iml等不需要展示的文件(推薦)

    idea 隱藏target,iml等不需要展示的文件(推薦)

    這篇文章主要介紹了idea 隱藏target,iml等不需要展示的文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論