外觀模式(Facade)

2022-03-12 10:41:59 字數 1895 閱讀 9354

facade?

如果是按照rup+ 的開發模式,隨著迭代與增量的進行,軟體**會越來越龐大,各個模組之間的關係會越來越複雜,如何你是初次接受該項目的開發非非常棘手,要理解清楚他們之間的關係,才能繼續完成下面的工作。不過與其這麼做,不如為這個大型程式準備乙個「視窗」。這樣,我們就不必單獨地關注每個類了,只需簡單地對「視窗」提出請求即可。

◆abstract factory模式(第8章)可以將abstract factory 模式看作生成複雜例項時的facade模式。因為它提供了「要想生成這個例項只需要呼叫這個方法就ok了」的簡單介面。

◆singleton模式(第5章)有時會使用singleton模式建立facade角色。

◆mediator模式(第16章)在facade模式中,facade角色單方面地使用其他角色來提供高層介面(api)。

而在mediator模式中,mediator角色作為colleague角色間的仲裁者負責調停。可以說,facade模式是單向的,而mediator角色是雙向的。

理解職責

>解釋

pagemaker |database 從郵件位址中獲取使用者名稱的類

pagemaker |htmlwriter 編寫html檔案的類

pagemaker |pagemaker |根據郵件位址編寫該使用者的web頁面

|無需package|maint測試程式行為的類

htmlwriter :html中隱藏宣告要求必須先呼叫title()而在pagemaker中我們提前就維護好了呼叫的順序,後面在maint不需要關係具體的呼叫依賴關係。

類圖:

code

public class database 

/*** 輸入檔名讀取資料

* @param filname

* @return

*/public static properties getproperties(string filname)catch (ioexception e)

return prop;}}

public class htmlwriter 

// 輸出標題 (這是隱藏條件必須先呼叫title方法)

public void title(string title) throws ioexception

// 輸出段落

public void paragraph(string msg)throws ioexception

// 輸出超連結

public void link(string href,string caption) throws ioexception

// 輸出郵件位址

public void mailto(string mailaddr,string username) throws ioexception

public void close() throws ioexception

}

public class pagemaker 

/*** 外觀介面

* @param mailaddr

* @param filename

*/public static void makewelcomepage(string mailaddr,string filename)catch (ioexception e)}}

public class maint 

}

外觀模式(Facade)

外觀模式的定義是,為子系統中的一組介面提供乙個一致的inte ce介面介面。外觀模式是個很簡單,但很重要的模式,它主要思想是將表現層和邏輯層隔離,封裝底層的複雜處理,只為使用者提供簡單的介面,這樣的例子隨處可見。外觀模式也叫門面模式,它很多時候更是一種系統架構的設計,在我所做的專案中,就實現了門面模...

Facade外觀模式

facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade外觀模式,是一種結構型模式,它主要解決...

Facade外觀模式

facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子 比如,現在有一輛汽車,我們 客戶程式 要啟動它,那我們就要發動引擎 子系統1 使四個車輪 子系統2 ...