設計模式之外觀模式

2021-10-10 11:18:40 字數 927 閱讀 3264

外觀模式(facade pattern)又叫門面模式,定義乙個將子系統的一組介面整合在一起的高層介面,以提供乙個一致的外觀

外觀模式讓外界減少與子系統內多個模組的直接互動,從而減少耦合,讓外界可以更輕鬆地使用子系統

門面角色:外觀模式的核心。它被客戶角色呼叫,它熟悉子系統的功能。內部根據客戶角色的需求預定了幾種功能的組合

子系統角色:實現了子系統的功能。它對客戶角色和facade是未知的

客戶角色:通過呼叫facede來完成要實現的功能

// 定義求和方法

class

sum}

// 定義求剩餘方法

class

minus

}// 通過乙個外觀物件統一暴露

class

calculator

sum(a, b)

minus

(a, b)

}// 建立外觀例項

let calc =

newcalculator()

// 呼叫

console.

log(

'sum'

, calc.

sum(1,

2))console.

log(

'minus'

, calc.

minus(6

,2))

對**和結構進行有規範的分離,層於層之間建立外觀模式

講多個複雜的功能或者介面進行分裝,統一對外提供乙個簡單的呼叫介面

優點:實現了子系統於客戶端的松耦合,客戶端遮蔽了子系統元件,減少了需要出了的物件or方法數目,更加方便呼叫

缺點:不符合開閉原則,如果要修改乙個子系統功能,通常外觀模式也要一起修改,沒有辦法阻止外部不通過外觀類訪問子系統的功能(所有暴露的方法都是公開的)

設計模式之外觀模式

外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...

設計模式之外觀模式

外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...

設計模式之外觀模式

外觀模式,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,層與層之間建立外觀facade。在開發階段,子系統往往因不斷的重構演化而變得越來越複雜,增加外觀模式可以提供乙個簡單的...