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 ...