亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

1.什么是外觀模式

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

2.如何實現(xiàn)

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

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

3.代碼實現(xiàn)

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

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

1)子系統(tǒng)CheckWord

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

2)Charge

/**
 * 子系統(tǒng)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

/**
 * 子系統(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)中全部或部分類。
 * 這個類替代子系統(tǒng)和用戶類打交道,
 * 所有用戶想要完成的功能由這個類進行調(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ā)布廣告的任務
     */
    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();
    }
}

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

相關文章

  • 淺談java是如何做資源回收補救的

    淺談java是如何做資源回收補救的

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

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

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

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

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

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

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

    java利用phantomjs進行截圖實例教程

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

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

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

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

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

    Java線程安全和鎖Synchronized知識點詳解

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

    SpringSecurity整合Jwt過程圖解

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

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

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

最新評論