国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《Java極簡(jiǎn)設(shè)計(jì)模式》第08章:外觀模式(Facade)

這篇具有很好參考價(jià)值的文章主要介紹了《Java極簡(jiǎn)設(shè)計(jì)模式》第08章:外觀模式(Facade)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

作者:冰河
星球:http://m6z.cn/6aeFbs
博客:https://binghe.gitcode.host
文章匯總:https://binghe.gitcode.host/md/all/all.html
源碼地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/java-simple-design-facade

沉淀,成長(zhǎng),突破,幫助他人,成就自我。

  • 本章難度:★★☆☆☆
  • 本章重點(diǎn):用最簡(jiǎn)短的篇幅介紹外觀模式最核心的知識(shí),理解外觀模式的設(shè)計(jì)精髓,并能夠靈活運(yùn)用到實(shí)際項(xiàng)目中,編寫(xiě)可維護(hù)的代碼。

大家好,我是冰河~~

今天給大家介紹《Java極簡(jiǎn)設(shè)計(jì)模式》的第08章,外觀模式(Facade),多一句沒(méi)有,少一句不行,用最簡(jiǎn)短的篇幅講述設(shè)計(jì)模式最核心的知識(shí),好了,開(kāi)始今天的內(nèi)容。

一、概述

為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,F(xiàn)acade模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。

二、適用性

1.當(dāng)為一個(gè)復(fù)雜子系統(tǒng)提供一個(gè)簡(jiǎn)單接口時(shí),子系統(tǒng)往往因?yàn)椴粩嘌莼兊迷絹?lái)越 復(fù)雜。大多數(shù)模式使用時(shí)都會(huì)產(chǎn)生更多更小的類。這使得子系統(tǒng)更具可重用性,也更容 易對(duì)子系統(tǒng)進(jìn)行定制,但這也給那些不需要定制子系統(tǒng)的用戶帶來(lái)一些使用上的困難。 Facade可以提供一個(gè)簡(jiǎn)單的缺省視圖,這一視圖對(duì)大多數(shù)用戶來(lái)說(shuō)已經(jīng)足夠,而那些需 要更多的可定制性的用戶可以越過(guò)facade層。

2.客戶程序與抽象類的實(shí)現(xiàn)部分之間存在著很大的依賴性。引入facade將這個(gè)子系統(tǒng)與客 戶以及其他的子系統(tǒng)分離,可以提高子系統(tǒng)的獨(dú)立性和可移植性。

3.當(dāng)需要構(gòu)建一個(gè)層次結(jié)構(gòu)的子系統(tǒng)時(shí),使用facade模式定義子系統(tǒng)中每層的入口點(diǎn)。 如果子系統(tǒng)之間是相互依賴的,你可以讓它們僅通過(guò)facade進(jìn)行通訊,從而簡(jiǎn)化了它們 之間的依賴關(guān)系。

三、參與者

1.Facade 知道哪些子系統(tǒng)類負(fù)責(zé)處理請(qǐng)求。 將客戶的請(qǐng)求代理給適當(dāng)?shù)淖酉到y(tǒng)對(duì)象。

2.Subsystemclasses 實(shí)現(xiàn)子系統(tǒng)的功能。 處理由Facade對(duì)象指派的任務(wù)。 沒(méi)有facade的任何相關(guān)信息;即沒(méi)有指向facade的指針。

四、類圖

《Java極簡(jiǎn)設(shè)計(jì)模式》第08章:外觀模式(Facade),Java極簡(jiǎn)設(shè)計(jì)模式,java,設(shè)計(jì)模式,外觀模式,程序員,架構(gòu)師

五、示例

Facade

/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description Facade
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public class Facade {

    ServiceA sa;
    ServiceB sb;
    ServiceC sc;

    public Facade() {
        sa = new ServiceAImpl();
        sb = new ServiceBImpl();
        sc = new ServiceCImpl();
    }

    public void methodA() {
        sa.methodA();
        sb.methodB();
    }

    public void methodB() {
        sb.methodB();
        sc.methodC();
    }

    public void methodC() {
        sc.methodC();
        sa.methodA();
    }
}

Inerfaces

/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description ServiceA
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public interface ServiceA {

    void methodA();
}
/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description ServiceB
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public interface ServiceB {

    void methodB();
}
/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description ServiceC
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public interface ServiceC {

    void methodC();
}

Subsystemclasses

/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description Subsystemclasses
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public class ServiceAImpl implements ServiceA{
    @Override
    public void methodA() {
        System.out.println("這是服務(wù)A");
    }
}
/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description Subsystemclasses
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public class ServiceBImpl implements ServiceB{
    @Override
    public void methodB() {
        System.out.println("這是服務(wù)B");
    }
}
/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description Subsystemclasses
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public class ServiceCImpl implements ServiceC{
    @Override
    public void methodC() {
        System.out.println("這是服務(wù)C");
    }
}

Test

/**
 * @author binghe(微信 : hacker_binghe)
 * @version 1.0.0
 * @description Test
 * @github https://github.com/binghe001
 * @copyright 公眾號(hào): 冰河技術(shù)
 */
public class Test {

    public static void main(String[] args) {
        ServiceA sa = new ServiceAImpl();
        ServiceB sb = new ServiceBImpl();
        sa.methodA();
        sb.methodB();
        System.out.println("========");
        //facade
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
    }
}

Result

這是服務(wù)A
這是服務(wù)B
========
這是服務(wù)A
這是服務(wù)B
這是服務(wù)B
這是服務(wù)C

好了,今天就到這兒吧,相信大家對(duì)外觀模式有了更清晰的了解,我是冰河,我們下期見(jiàn)~~文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-725952.html

到了這里,關(guān)于《Java極簡(jiǎn)設(shè)計(jì)模式》第08章:外觀模式(Facade)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Java 設(shè)計(jì)模式】結(jié)構(gòu)型之外觀模式

    外觀模式(Facade Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式, 它為復(fù)雜系統(tǒng)提供了一個(gè)簡(jiǎn)化的接口,隱藏了系統(tǒng)的復(fù)雜性,使得客戶端更容易使用系統(tǒng) 。外觀模式通過(guò)創(chuàng)建一個(gè)包裝類(外觀類),將系統(tǒng)的復(fù)雜性封裝起來(lái),對(duì)客戶端提供一個(gè)簡(jiǎn)單的接口。在本文中,我們將深入研究Ja

    2024年01月21日
    瀏覽(26)
  • 設(shè)計(jì)模式-外觀模式在Java中的使用示例

    設(shè)計(jì)模式-外觀模式在Java中的使用示例

    外觀模式是一種使用頻率非常高的結(jié)構(gòu)型設(shè)計(jì)模式,它通過(guò)引入一個(gè)外觀角色來(lái)簡(jiǎn)化客戶端與子系統(tǒng) 之間的交互,為復(fù)雜的子系統(tǒng)調(diào)用提供一個(gè)統(tǒng)一的入口,降低子系統(tǒng)與客戶端的耦合度,且客戶端調(diào)用非常方便。 示例 自己泡茶和去茶館喝茶的區(qū)別,如果是自己泡茶需要自

    2024年02月17日
    瀏覽(24)
  • 《Java極簡(jiǎn)設(shè)計(jì)模式》第05章:原型模式(Prototype)

    《Java極簡(jiǎn)設(shè)計(jì)模式》第05章:原型模式(Prototype)

    作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章匯總:https://binghe.gitcode.host/md/all/all.html 源碼地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/java-simple-design-prototype 沉淀,成長(zhǎng),突破,幫助他人,成就自我。 本章難度:★★☆☆☆ 本章重點(diǎn):用

    2024年02月11日
    瀏覽(31)
  • 《Java極簡(jiǎn)設(shè)計(jì)模式》第03章:工廠方法模式(FactoryMethod)

    《Java極簡(jiǎn)設(shè)計(jì)模式》第03章:工廠方法模式(FactoryMethod)

    作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章匯總:https://binghe.gitcode.host/md/all/all.html 源碼地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/java-simple-design-factorymethod 沉淀,成長(zhǎng),突破,幫助他人,成就自我。 本章難度:★★☆☆☆ 本章重點(diǎn):

    2024年02月12日
    瀏覽(25)
  • 【Java面試題】設(shè)計(jì)模式之七種結(jié)構(gòu)性模式——代理模式、適配器模式、橋接模式、裝飾模式、外觀模式、享元模式、組合模式

    目錄 一、代理模式 二、適配器模式 三、橋接模式 四、裝飾模式 五、外觀模式 六、享元模式 七、組合模式 概念: 代理模式是為其他對(duì)象提供一種以代理控制對(duì)這個(gè)對(duì)象的訪問(wèn)。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)

    2023年04月09日
    瀏覽(26)
  • 《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-05-門(mén)面模式Facade)

    《golang設(shè)計(jì)模式》第二部分·結(jié)構(gòu)型模式-05-門(mén)面模式Facade)

    門(mén)面(Facade)向客戶端提供使用子系統(tǒng)的統(tǒng)一接口,用于簡(jiǎn)化客戶端使用子系統(tǒng)的操作。 門(mén)面角色(Facade) 客戶端可以調(diào)用的接口或方法 此角色知曉系統(tǒng)的所有功能和責(zé)任 一般情況下,該角色沒(méi)有實(shí)際業(yè)務(wù)邏輯,只是一個(gè)委托類。 子系統(tǒng)角色(Subsystem) 同時(shí)有一個(gè)或多個(gè)

    2024年02月07日
    瀏覽(31)
  • 設(shè)計(jì)模式詳解-外觀模式

    類型:結(jié)構(gòu)型模式 實(shí)現(xiàn)原理:定義了一個(gè)高層接口,向現(xiàn)有的系統(tǒng)中的一組接口提供一致的界面 目的:降低訪問(wèn)復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡(jiǎn)化客戶端之間的接口,使系統(tǒng)更加容易使用 何時(shí)使用:簡(jiǎn)化復(fù)雜系統(tǒng),方便操作 解決方法:對(duì)客戶端和系統(tǒng)解耦,讓外觀類

    2024年02月12日
    瀏覽(23)
  • 設(shè)計(jì)模式:外觀模式

    外觀模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它提供了一個(gè)統(tǒng)一的接口,用于訪問(wèn)子系統(tǒng)中的一組接口。外觀模式隱藏了子系統(tǒng)的復(fù)雜性,使得客戶端能夠更簡(jiǎn)單地使用子系統(tǒng)的功能。 外觀模式的核心思想是將復(fù)雜的子系統(tǒng)封裝在一個(gè)外觀類中,客戶端只需要與外觀類進(jìn)行交互,而不需

    2024年02月07日
    瀏覽(33)
  • 設(shè)計(jì)模式(8)外觀模式

    設(shè)計(jì)模式(8)外觀模式

    一、 1、使用背景:降低訪問(wèn)復(fù)雜系統(tǒng)的內(nèi)部子系統(tǒng)時(shí)的復(fù)雜度,簡(jiǎn)化客戶端之間的接口。 2、定義: 為子系統(tǒng)中的一組接口定義一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。完美地體現(xiàn)了依賴倒轉(zhuǎn)原則和迪米特法則的思想。 3、結(jié)構(gòu)

    2024年02月11日
    瀏覽(23)
  • 設(shè)計(jì)模式之~外觀模式

    設(shè)計(jì)模式之~外觀模式

    定義: ????????為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,此模式定義了一個(gè)高層接口,這個(gè)接口使得這一子系統(tǒng)更加容易使用。 結(jié)構(gòu)圖: 區(qū)分中介模式: 門(mén)面模式對(duì)外提供一個(gè)接口 中介模式對(duì)內(nèi)提供一個(gè)接口 優(yōu)點(diǎn): 松耦合:用戶與子系統(tǒng)解耦,屏蔽子系統(tǒng);可以

    2024年02月07日
    瀏覽(36)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包