外觀模式(facade):為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。
以上的定義摘自《大話設計模式》。按我自己的理解,外觀模式:將乙個或多個類中的多個方法打包到乙個方法中供外界呼叫。打個比方,現有a類的a方法、b類的b方法、c類的c方法,我們的業務**想呼叫三個方法,
public class business
}
使用外觀模式後,我們不讓業務**直接呼叫這三個方法,而是通過乙個包裝後的方法來呼叫
public class facade
}public class business
}
很多朋友即使沒特意學習過外觀模式,但在實際工作中肯定有運用到它,比如在持久層和業務層之間,我們通常就會建立外觀,將一系列持久層操作使用外觀包裝起來供業務層呼叫。
我們再做個例子,我們的公司有員工要入職,入職需要往資料庫裡記錄員工基本資訊、給員工分配的電腦資訊、該員工的福利資訊,使用外觀模式**如下:
public class employeedao
//刪除員工資訊
public void deleteemployee(string name)
}public class empcomputerdao
// 刪除員工分配電腦資訊
public void deletecomputer(string ename)
}public class welfaredao
// 刪除員工福利資訊
public void deletewelfare(string ename)
}public class company
// 員工辭職
public void resign(string ename)
}public class mainclass
}
外觀模式的好處:
封裝了細節,更加易用和可維護。
比如張三入職,我們在業務**上只需要呼叫入職方法,而不需要去管入職具體做了哪些操作,以後維護這段**時候我們非常明確這裡是張三入職了!而不用去猜「儲存員工資訊」、「儲存員工分配電腦資訊」等等這些操作連在一起到底是要幹嘛呢。。。
23種設計模式 四 外觀模式
通過父系統呼叫子系統,也就是父系統是入口,呼叫不同的子系統,遵守迪公尺特法則,最少知道原則 優點 簡化呼叫過程,無需了解子系統,防止帶來風險 減少系統依賴,減少系統耦合性 生活中的例子 例如我在cf官網,我用積分兌換,裝備,我只需要知道我能兌換裝備,我不需要他具體執行的什麼,具體能不能到我的賬號,內...
設計模式筆記之十 外觀模式
外觀模式 外觀模式就是為子系統的一系列相關的介面提供乙個整合過的介面,從而減少客戶類對這些介面的呼叫成本。最近實驗室的老總鬱悶的很了,因為女秘書因為太過勞累住院了。以前秘書可以做的事情,老總得要自己做了。這也是為什麼我們實驗室最近無聊的會開的少的原因 class meetingroom public...
設計模式之筆記 外觀模式(Facade)
外觀模式 facade 定義 外觀模式 facade 為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。類圖 描述 facade 外觀類,外觀類知道哪些子系統類負責處理請求,將使用者的請求 給恰當的子系統物件。classes 子系統類,實現了子系統...