Java設計模式-外觀模式

1、外觀模式的概念

外觀模式(Facade),可以理解為,為子系統(tǒng)中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。通俗一點講,比如我們去拿閑錢理財,可能我們自己初入理財,不大懂,就會跟風入手多種產(chǎn)品:股票、國債、房地產(chǎn)等等。我們需要了解每個產(chǎn)品的情況,需要我們參與這些產(chǎn)品的具體買和賣,所以耦合性很高。而如果我們找一個理財機構,讓理財經(jīng)理替我們打理,理財經(jīng)理知道哪些產(chǎn)品賺錢,所以,我們不需要知道過程,只負責收錢就好。這個過程中,理財經(jīng)理相當于高層接口,那些投資項目相當于各個子系統(tǒng)。

2、舉例說明

三個子系統(tǒng)的類

class SubSystemOne
{
    public void methodOne(){
       System.out.print("子系統(tǒng)方法一") ;      
    }
}

class SubSystemTwo
{
    public void methodTwo(){
       System.out.print("子系統(tǒng)方法二") ;      
    }
}

class SubSystemThree
{
    public void methodThree(){
       System.out.print("子系統(tǒng)方法三");       
    }
}

外觀類

class Facade
{
    SubSystemOne one;
    SubSystemTwo two;
    SubSystemThree three;
    
    public Facade(){
      one = new SubSystemOne();
      two = new SubSystemTwo();
      three = new SubSystemThree();
    }

    public void methodA(){
      System.out.print("方法組 A ") ;
      one. methodOne();
      two. methodTwo();
      three. methodThree();
    }

    public void methodB(){
      System.out.print("方法組 B ") ;
      one. methodOne();
      two. methodTwo();
    }

    public void methodC(){
      System.out.print("方法組 C ") ;
      two. methodTwo();
      three. methodThree();
    }

}

調用代碼

public void main(String[] args)
{
    Facade f = new Facade();
    f.methodA();
    f.methodC();
}

3、使用外觀模式

第一、在設計初期階段,應該要有意識的將不同的兩個層分離,比如經(jīng)典的三層架構,就需要考慮在數(shù)據(jù)訪問層和業(yè)務邏輯層、業(yè)務邏輯層和表示層的層與層之間建立外觀Facade,這樣可以為負責的子系統(tǒng)提供一個簡單的接口,使得耦合度大大降低。
第二、在開發(fā)階段,子系統(tǒng)往往因為不斷地重構演化而變得復雜,大多數(shù)的模式使用時也都會產(chǎn)生很多很小的類,這本是好事,但也給外部調用它們的用戶程序帶來了使用上的困難,增加外觀Facade可以提供一個簡單的接口,減少它們之前的依賴。
第三、在維護一個遺留的大型系統(tǒng)時,可能這個系統(tǒng)已經(jīng)非常困難維護和擴展了,但因為它包含非常重要的功能,新的需求開發(fā)必須要依賴于它。此時用外觀模式Facade也是非常合適的。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 迪米特法則(最少知識原則) 一個軟件實體應當盡可能少的與其他實體發(fā)生相互作用。 外觀模式核心 為子系統(tǒng)提供統(tǒng)一的入...
    GaaraZ閱讀 405評論 0 0
  • 設計模式概述 在學習面向對象七大設計原則時需要注意以下幾點:a) 高內聚、低耦合和單一職能的“沖突”實際上,這兩者...
    彥幀閱讀 3,897評論 0 14
  • Java設計模式之外觀模式 這期跟大家分享一下外觀模式,跟前幾期一樣外觀模式也是一種結構模式,都是為了使程序結構更...
    icyage閱讀 312評論 0 0
  • 1.外觀模式(Facade Pattern) 外觀模式 隱藏系統(tǒng)的復雜性,并向客戶端提供了一個客戶端可以訪問系統(tǒng)的...
    Mr_歡先生閱讀 703評論 1 7
  • 1 場景問題# 1.1 生活中的示例## 外觀模式在現(xiàn)實生活中的示例很多,比如:組裝電腦,通常會有兩種方案。 一個...
    七寸知架構閱讀 6,502評論 7 57

友情鏈接更多精彩內容