10、外觀模式(設計模式筆記)

一、概述

  • 迪米特法則(最少知識原則):一個軟件實體應盡可能少的與其他實體發生相互作用。

  • 外觀模式核心:為子系統提供統一的入口。封裝子系統的復雜性,便于客戶端調用。

二、案例

這里我們以注冊公司流程進行說明,先看當我們不使用外觀模式時的做法:

工商局.java

package cn.itcast.day241.facade;
public interface 工商局 {
    public void checkName();//核對公司名稱,不能和別的公司重名
}

class 海淀區工商局 implements 工商局{

    public void checkName() {
        System.out.println("檢查名字是否有沖突");
    }
}

銀行.java

package cn.itcast.day241.facade;
public interface 銀行 {
    public void openAccount();//去銀行給公司開戶
}

class 中國工商銀行 implements 銀行{

    public void openAccount() {
        System.out.println("在中國工商銀行開戶");
    }
}

質檢局.java

package cn.itcast.day241.facade;
public interface 質檢局 {
    public void orgCodeCertificate();//辦理組織機構代碼證
}

class 海淀區質檢局 implements 質檢局{

    public void orgCodeCertificate() {
        System.out.println("在海淀區質檢局辦理組織機構代碼證");
    }
}

稅務局.java

package cn.itcast.day241.facade;
public interface 稅務局 {
    public void taxCertificate();//在稅務局辦理登記證
}

class 海淀區稅務局 implements 稅務局{

    public void taxCertificate() {
        System.out.println("在海淀區稅務局辦理登記證");
    }
}

說明:以上就是我們注冊公司一般的三個步驟,如果我們不使用外觀模式,我們必須和以上的類進行交互,看使用方式:

Client.java

package cn.itcast.day241.facade;
public class Client {
    public static void main(String[] args) {
        工商局 a = new 海淀區工商局();
        a.checkName();
        質檢局 b = new 海淀區質檢局();
        b.orgCodeCertificate();
        稅務局 c = new 海淀區稅務局();
        c.taxCertificate();
        銀行 d = new 中國工商銀行();
        d.openAccount();
    }
}

說明:而如果我們使用外觀模式就需要將各個流程的細節封裝起來,對外只是提供一個注冊接口。

RegisterFacade.java

package cn.itcast.day241.facade;
//辦理注冊公司流程的接口對象
public class RegisterFacade {
    public void register(){
        工商局 a = new 海淀區工商局();
        a.checkName();
        質檢局 b = new 海淀區質檢局();
        b.orgCodeCertificate();
        稅務局 c = new 海淀區稅務局();
        c.taxCertificate();
        銀行 d = new 中國工商銀行();
        d.openAccount();
    }
}

說明:此時我們在使用的時候就非常容易了。

Client.java

package cn.itcast.day241.facade;
public class Client {
    public static void main(String[] args) {    
        new RegisterFacade().register();
    }
}

三、開發中的場景:

頻率很高。哪里都會遇到。各種技術和框架中,都有外觀模式的使用。如:
jdbc封裝后,commons提供的DBUtils類,Hibernate提供的工具類、Spring JDBC工具類等。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,359評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • 01 2017年3月8日,女王節,送給自己最大的禮物,也是最自虐的禮物,注冊了簡書賬號,并發布了自己的第一篇文章《...
    花隨鶯愿閱讀 2,738評論 4 56
  • 人們選擇寫作可能會有五花八門的原因。非要說出個一二,可能仁者見仁智者見智。在這里我自己詳述下自己堅持寫作的原因。 ...
    腹有經綸氣自華閱讀 576評論 11 16
  • 轟! 兩根猶如神靈般的巨指,劃過天際,最后轟然相撞,在那撞擊的瞬間,這片天地仿佛是在此時直接凝固了下來... 天地...
    混沌天書閱讀 203評論 0 0