十二 設計模式之外觀模式(結構型)

2021-09-24 05:39:20 字數 1409 閱讀 8841

外觀模式概述

facade模式也叫外觀模式,是由gof提出的23種設計模式中的一種。facade模式為一組具有類似功能的類群,比如類庫,子系統等等,提供乙個一致的簡單的介面。這個一致的簡單的介面被稱作facade。

外觀模式的角色和職責

facade:為呼叫方定義簡單的呼叫介面。

clients:呼叫者。通過facade介面呼叫提供某功能的內部類群。

packages:功能提供者。指提供功能的類群(模組或子系統)。

使用場景

設計初期階段,應該有意識的將不同層分離,層與層之間建立外觀模式。

開發階段,子系統越來越複雜,增加外觀模式提供乙個簡單的呼叫介面。

維護乙個大型遺留系統的時候,可能這個系統已經非常難以維護和擴充套件,但又包含非常重要的功能,為其開發乙個外觀類,以便新系統與其互動。

簡單來說,使用了外觀模式,使用者就不必直接面對眾多功能模組,降低了使用難度,簡單舉個例子

電腦開機進入系統,我們把他分為4步,首先開啟電源,bois自檢,系統引導,進入系統,4個功能是四個功能模組

開啟電源

public class startpower

}bois自檢

public class boisselftest

}系統引導

public class systemguide  

}進入系統

public class entersystem

}如果,我們沒有使用外觀模式,就需要使用者自己挨個使用這些功能

public class mainclass

}執行結果為:

這樣,電腦順利啟動,可是同樣可以看出來,使用者使用非常繁瑣,不僅需要使用者自己挨個使用所有用到的功能,同時還需要使用者知道電腦啟動的順序,按順序使用功能,不然就會導致問題,這樣顯然是不可取的

所以,用到外觀模式,建立乙個facade,專門用於使用功能模組

public class facade

}這時客戶端就是這樣

public class mainclass

}可以看到,使用者這時只需要呼叫facade中的方法即可,無需知道電腦有什麼具體的功能模組,無需知道功能模組執行的順序是什麼,只是呼叫一下就好了。

簡化了使用,同時也增加了**的復用與可維護性。

優點鬆散耦合:使得客戶端和子系統之間解耦,讓子系統內部的模組功能更容易擴充套件和維護;

簡單易用:客戶端根本不需要知道子系統內部的實現,或者根本不需要知道子系統內部的構成,它只需要跟facade類互動即可。

更好的劃分訪問層次:有些方法是對系統外的,有些方法是系統內部相互互動的使用的。子系統把那些暴露給外部的功能集中到門面中,這樣就可以實現客戶端的使用,很好的隱藏了子系統內部的細節。

設計模式 結構型之外觀模式

在軟體系統中,客戶端程式經常會與複雜系統的內部子系統之間產生耦合,從而導致客戶端程式隨子系統的變化而變化,那麼如何簡化客戶端程式跟內部子系統之間的依賴?此時,我們需要引入乙個 外觀 角色,客戶端直接與外觀角色進行互動,客戶端與子系統之間的依賴關係由外觀角色 facade 來實現和維護。如下圖 外部程...

結構型模式之外觀模式

外觀模式 facade 外觀模式是為了解決類與類之家的依賴關係的,像spring 一樣,可以將類和類之間的關係配置到配置 檔案中,而外觀模式就是將他們的關係放在乙個facade 類中,降低了類類之間的耦合度,該模式中沒 有涉及到介面,看下類圖 我們以乙個計算機的啟動過程為例 我們先看下實現類 pub...

結構型模式之外觀模式

1 外觀模式產生的原因 在軟體開發過程中,程式一般會越做越大,而這樣系統中類及子系統之間的影響會使彼此間的關係變得錯綜複雜即過多的耦合,這就導致了隨著系統中類或子系統發生變化,與之相關聯的子系統或類就需要發生變化。2 外觀模式的定義 外觀模式 facade pattern 就是為子系統中的一組介面提...