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

深入理解Java設(shè)計(jì)模式之外觀模式

 更新時(shí)間:2021年11月08日 09:28:58   作者:一指流砂~  
這篇文章主要介紹了JAVA設(shè)計(jì)模式之外觀模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解下

一、什么是外觀模式

定義:為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,用來訪問子系統(tǒng)中的一群接口。

外觀模式組成:

Facade:負(fù)責(zé)子系統(tǒng)的的封裝調(diào)用

Subsystem Classes:具體的子系統(tǒng),實(shí)現(xiàn)由外觀模式Facade對(duì)象來調(diào)用的具體任務(wù)

二、外觀模式的使用場(chǎng)景

1、設(shè)計(jì)初期階段,應(yīng)該有意識(shí)的將不同層分離,層與層之間建立外觀模式;

2、開發(fā)階段,子系統(tǒng)越來越復(fù)雜,增加外觀模式提供一個(gè)簡(jiǎn)單的調(diào)用接口;

3、維護(hù)一個(gè)大型遺留系統(tǒng)的時(shí)候,可能這個(gè)系統(tǒng)已經(jīng)非常難以維護(hù)和擴(kuò)展,但又包含非常重要的功能,為其開發(fā)一個(gè)外觀類,以便新系統(tǒng)與其交互。

三、外觀模式的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1、實(shí)現(xiàn)了子系統(tǒng)與客戶端之間的松耦合關(guān)系;
2、客戶端屏蔽了子系統(tǒng)組件,減少了客戶端所需處理的對(duì)象數(shù)目,并使得子系統(tǒng)使用起來更加容易。

缺點(diǎn):

1、不符合開閉原則,如果要修改某一個(gè)子系統(tǒng)的功能,通常外觀類也要一起修改;

2、沒有辦法直接阻止外部不通過外觀類訪問子系統(tǒng)的功能,因?yàn)樽酉到y(tǒng)類中的功能必須是公開的(根據(jù)需要決定是否使用internal訪問級(jí)別可解決這個(gè)缺點(diǎn),但外觀類需要和子系統(tǒng)類在同一個(gè)程序集內(nèi))。

四、外觀模式的實(shí)現(xiàn)

先寫出四個(gè)子系統(tǒng)的類

class SubSystemOne
{
    public void MethodOne()
    {
        Console.WriteLine("子系統(tǒng)方法一");
    }
}
class SubSystemTwo
{
    public void MethodTwo()
    {
        Console.WriteLine("子系統(tǒng)方法二");
    }
}
class SubSystemThree
{
    public void MethodThree()
    {
        Console.WriteLine("子系統(tǒng)方法三");
    }
}
class SubSystemFour
{
    public void MethodFour()
    {
        Console.WriteLine("子系統(tǒng)犯法四");
    }
}

引入外觀類,減少子系統(tǒng)類之間的交互

class Facade
{
    SubSystemOne one;
    SubSystemTwo two;
    SubSystemThree three;
    SubSystemFour four;
    public Facade()
    {
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThree();
        four = new SubSystemFour();
    }
    public void MethodA()
    {
        Console.WriteLine("\n方法組合A()---");
        one.MethodOne();
        two.MethodTwo();
        four.MethodFour();
    }
    public void MethodB()
    {
        Console.WriteLine("\n方法組B()---");
        two.MethodTwo();
        three.MethodThree();
    }
}

客戶端代碼:

static void Main(string[] args)
{
    Facade facade = new Facade();
    facade.MethodA();
    facade.MethodB();
    Console.Read();
}

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Spring?Boot?集成接口管理工具?Knife4j

    Spring?Boot?集成接口管理工具?Knife4j

    這篇文章主要介紹了Spring?Boot?集成接口管理工具?Knife4j,首先通過創(chuàng)建一個(gè)?Spring?Boot?項(xiàng)目展開主題,需要的小伙伴可以參考一下
    2022-05-05
  • MyBatis中映射文件的使用案例代碼

    MyBatis中映射文件的使用案例代碼

    這篇文章主要介紹了MyBatis中映射文件的使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-02-02
  • Java多線程wait()和notify()方法詳細(xì)圖解

    Java多線程wait()和notify()方法詳細(xì)圖解

    wait()和notify()是直接隸屬于Object類,也就是說所有對(duì)象都擁有這一對(duì)方法,下面這篇文章主要給大家介紹了關(guān)于Java多線程wait()和notify()方法詳細(xì)圖解的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • intellij idea tomcat熱部署配置教程

    intellij idea tomcat熱部署配置教程

    這篇文章主要介紹了intellij idea tomcat熱部署配置教程圖解,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • 在Java Spring框架中使用的設(shè)計(jì)模式有哪些

    在Java Spring框架中使用的設(shè)計(jì)模式有哪些

    面試中常會(huì)被問道Spring框架使用了哪些設(shè)計(jì)模式?關(guān)于這個(gè)問題本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringBoot中創(chuàng)建的AOP不生效的原因及解決

    SpringBoot中創(chuàng)建的AOP不生效的原因及解決

    這篇文章主要介紹了SpringBoot中創(chuàng)建的AOP不生效的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • @ConfigurationProperties加載外部配置方式

    @ConfigurationProperties加載外部配置方式

    這篇文章主要介紹了@ConfigurationProperties加載外部配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java替換(新增)JSON串里面的某個(gè)節(jié)點(diǎn)操作

    Java替換(新增)JSON串里面的某個(gè)節(jié)點(diǎn)操作

    這篇文章主要介紹了Java替換(新增)JSON串里面的某個(gè)節(jié)點(diǎn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Trace?在多線程異步體系下傳遞流程解析

    Trace?在多線程異步體系下傳遞流程解析

    這篇文章主要為大家介紹了Trace?在多線程異步體系下傳遞流程解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Spring boot中filter類不能注入@Autowired變量問題

    Spring boot中filter類不能注入@Autowired變量問題

    這篇文章主要介紹了Spring boot中filter類不能注入@Autowired變量問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論