外觀模式(facade),為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。
外觀模式uml類圖:
如上圖所示為外觀模式結構圖,其中facade類即外觀類,它需要了解所有的子系統的方法或屬性,進行組合以備外界呼叫,它知道哪些子系統類負責處理請求,將客戶的請求**給適當的子系統物件。subsystem classes為子系統類集合,實現子系統功能,處理facade物件指派的任務,注意各子類中沒有facade的任何資訊,即沒有對facade物件的引用。
外觀模式實現**:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace facade
}class subsystemtwo
}class subsystemthree
}class subsystemfour}/*
* 外觀類,它需要了解所有的子系統的方法或屬性,進行組合,已被外界呼叫
* 外觀模式facade,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,
* 這個介面使得這一子系統更加容易使用
*/class facade
public void methodgroupa()
public void methodgroupb()}}
客戶端:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace facade}}
外觀模式總結:
首先,在設計初期階段,應該要有意識的將不同的兩個階層分離,比如經典的三層架構,就需要考慮在資料訪問層和業務邏輯層、業務邏輯層和表示層的層與層之間建立外觀facade,這樣可以為複雜的子系統提供乙個簡單的介面,使得耦合大大降低。
其次,在開發階段子系統往往因為不斷的重構演化而變得越來越複雜,大多數的模式使用時也都會產生很多很好的類,這本是好事,但也給外部呼叫它們的使用者程式帶來了使用上的困難,增加外觀facade可以提供乙個簡單的介面,減少它們之間的依賴。
第三,在維護乙個遺留的大型系統時,可能這個系統已經非常難以維護和擴充套件,但因為它包含非常重要的功能,新的需求開發必須要依賴於它,此時用外觀模式facade也是非常合適的。你可以為新系統開發乙個外觀facade類,來提供設計粗糙或高度複雜的遺留**比較清晰簡單的介面,讓新系統與facade物件互動,facade與遺留**互動所有複雜的工作。
外觀模式(Facade)
外觀模式的定義是,為子系統中的一組介面提供乙個一致的inte ce介面介面。外觀模式是個很簡單,但很重要的模式,它主要思想是將表現層和邏輯層隔離,封裝底層的複雜處理,只為使用者提供簡單的介面,這樣的例子隨處可見。外觀模式也叫門面模式,它很多時候更是一種系統架構的設計,在我所做的專案中,就實現了門面模...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade外觀模式,是一種結構型模式,它主要解決...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子 比如,現在有一輛汽車,我們 客戶程式 要啟動它,那我們就要發動引擎 子系統1 使四個車輪 子系統2 ...