外觀模式為子系統中的一組接口提供一個一致的界面。Facade模式定義瞭一個高層接口,這個接口使得這一子系統更加容易使用。
網上有許多安保系統應用外觀模式的例子,在這裡我舉一個客服中心的例子,客戶投訴一般會經過以下一系列操作:登記投訴信息、分配受理部門、提交投訴信息。
沒有客服MM的時候,客戶投訴需要自己操作登記信息、分配部門並且提交投訴等,我相信你一定會很快瘋掉。
有瞭個客服MM後,用戶直接和客服打交道,由客服MM替我們完成後繼的操作。
在上面的例子裡,服務MM的角色就是外觀模式中定義的Facade(也有人稱之為“門面”)。對於一系列復雜的操作(也就是程序中的子應用),用戶並不關心這些操作的細節。這時我們需要提供一個統一訪問這些復雜操作的入口,針對各子應用的所有操作都是通過這個入口來完成,對於用戶來說,隻關心這個入口提供的功能就可以瞭。
外觀模式主要強調兩方面的內容,一是所有對子應用的訪問必須通過統一的入口來完成,二是這個入口隻是被用來訪問子應用中復雜的操作,不允許添加其它的業務邏輯。
上面客服MM的例子使用外觀模式來實現,代碼如下:
[java]
class OperationRegist{
void regist(){
//處理投訴的登記
}
}
class OperationDispatch{
void dispatch(){
//處理投訴的分配
}
}
class OperationSubmit{
void submit(){
//處理投訴的提交
}
}
class OperationFacade{
OperationRegist op1 = new OperationRegist();
OperationDispatch op2 = new OperationDispatch();
OperationSubmit op3 = new OperationSubmit();
void operate(){
op1.regist();
op2.dispatch();
op3.submit();
}
}
作者:fancy888