為子系統中的一組介面提供乙個一致的介面,定義乙個高層介面,這個介面使得這一子系統更加容易使用。
我們以開車時候自動擋和手動擋加速換擋為例:
手動擋的加速換擋過程:鬆油門(freeaccelerator)-->踩離合踏板(pushclutch)-->換擋(shiftgear)-->放離合(freeclutch)-->踩油門(pushaccelerator)
**實現:
public class user
} inte***ce car
class carimpl implements car
@override
public void shiftgear()
@override
public void freeclutch()
}
自動擋的加速換擋過程:踩油門---->自動變速箱(踩離合踏板(pushclutch)-->換擋(shiftgear)-->放離合(freeclutch))--->踩油門
**實現:
public class user
}class autoshiftcar }
inte***ce car
class carimpl implements car
@override
public void shiftgear()
@override
public void freeclutch()
}
從類圖中和**中可以看出,自動擋的變速箱就是講手動擋變速箱的換擋過程封裝到乙個方法中,這樣使用者使用的時候就不需要知道具體的換擋的過程,只需要去呼叫自動換擋的方法autoshift,它就會把整個換擋的三個方法(pushclutch---shifgear---freeclutch)組合起來。
外觀模式就是使用乙個介面group將一組特定順序的介面(a--b--c)組合起來,當需要呼叫特定順序的一組介面(a--b--c)的時候,就只需要呼叫對於的那個介面group就行;組合的介面順序發生改變時(a--b--c修改為c--b--a),我們也只需要去修改介面group,引用到group的地方就會跟著被修改。
設計模式之外觀模式
外觀模式提供了乙個統一的介面,用來訪問子系統中的一群介面。這樣可以避免客戶端和子系統之間的緊耦合。這種模式需要將一系列的子系統組合到外觀中,然後將具體的工作交給各個子系統去完成。如此一來,可以簡化介面的呼叫。其本質就是將系統與客戶端互動的地方封裝起來。這個模式,總體來說,很簡單,理解起來也不困難。依...
設計模式之外觀模式
外觀模式 為子系統中的一組介面提供乙個一直的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。即通過乙個中類來完成客戶端的請求。拿機房收費系統的上機過程來說,上機需要顯示上機者的資訊,填寫上機狀態表,填寫上機記錄表。而使用者不需要知道這些功能是怎麼實現的,只需要通過介面操作就可以完...
設計模式之外觀模式
外觀模式,為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。在設計初期階段,應該要有意識的將不同的兩個層分離,比如經典的三層架構,層與層之間建立外觀facade。在開發階段,子系統往往因不斷的重構演化而變得越來越複雜,增加外觀模式可以提供乙個簡單的...