外觀模式(facade)是結構型設計模式,外觀模式就是為乙個子系統中的多個類提供統一介面的方法,把乙個元件單元構建為乙個子系統有助於減少軟體的複雜性,而且可以使子系統與其他元件的通訊關係更加間接、易控制,可以最大限度的降低元件間的耦合度。達到這乙個目標的最好方法就是引進乙個外觀類,讓它為子系統的通用功能提供乙個簡單一致的公共介面。
在別處看到乙個例子,就是組裝電腦,需要一台電腦,你可以去電子城,選擇主機板、顯示器、cpu、各種外設等組裝一台電腦。當然,為了方便,也可以直接找一家裝機公司,它們負責將各種電腦元件組裝好。這就是外觀模式的概念。外觀模式就是將多個關係比較複雜的類放到乙個外觀類中統一處理,從而外部呼叫起來只要與外觀打交道,而不必清楚內部各個類之間的呼叫關係,簡化了客戶端呼叫的複雜度。
考慮一下在atm取款的系統:
系統介面:
package facade;
public inte***ce getmoney
子系統1:
package facade;
public class insertcards implements getmoney
@override
public void dothings()
}
子系統2:
package facade;
public class password implements getmoney
@override
public void dothings()
}
子系統3:
package facade;
public class getcash implements getmoney
@override
public void dothings()
}
如果不使用facade模式,則客戶端程式:
package facade;
public class client_without_facade
}
如果銀行在某一天要增加atm取款的安全,要增加atm取款時候的步驟,增加步驟a,那麼必須要修改客戶端程式,這樣代價就高了。如果使用facade模式,則編寫facade類:
package facade;
public class facade
public void dothings()
}
客戶端**:
package facade;
public class client
}
這樣如果要做出上述修改,則只需修改facade類和增加子系統即可,不用修改client程式。
綜上所述,facade模式的優點:
1.鬆散耦合。外觀模式鬆散了客戶端與子系統的耦合關係,讓子系統內部的模組可以更容易擴充套件和維護。
2.簡單易用。外觀模式讓子系統更易用,客戶商無需要了解子系統的內部細節,更不需要與各子系統模組進行互動,只需要與外觀物件進行互動就可以呢,由外觀模式為客戶端提供一站式服務。
外觀模式(Facade)
外觀模式的定義是,為子系統中的一組介面提供乙個一致的inte ce介面介面。外觀模式是個很簡單,但很重要的模式,它主要思想是將表現層和邏輯層隔離,封裝底層的複雜處理,只為使用者提供簡單的介面,這樣的例子隨處可見。外觀模式也叫門面模式,它很多時候更是一種系統架構的設計,在我所做的專案中,就實現了門面模...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。facade設計模式更注重從架構的層次去看整個系統,而不是單個類的層次。facade外觀模式,是一種結構型模式,它主要解決...
Facade外觀模式
facade外觀模式,是一種結構型模式,它主要解決的問題是 元件的客戶和元件中各種複雜的子系統有了過多的耦合,隨著外部客戶程式和各子系統的演化,這種過多的耦合面臨很多變化的挑戰。在這裡我想舉乙個例子 比如,現在有一輛汽車,我們 客戶程式 要啟動它,那我們就要發動引擎 子系統1 使四個車輪 子系統2 ...