模式实例之——外观实例
場景:銀行柜員機取錢或存錢
?
描述:從銀行的柜員機取了100塊錢
?
(一)子系統
/// <summary>
??? /// 子系統抽象
??? /// </summary>
??? public interface IDo
??? {
??????? void ShowMessage(string strMemo);
??? }
(二)各個子系統
/// <summary>
??? /// 卡類別識別
??? /// </summary>
??? public class Card : IDo
??? {
??????? public void ShowMessage(string strMemo)
??????? {
??????????? Console.WriteLine("插入銀行卡"+strMemo+"……");
??????? }
??? }
?
??? /// <summary>
??? /// 業務各類識別
??? /// </summary>
??? public class OpType : IDo
??? {
??????? public void ShowMessage(string strMemo)
??????? {
??????????? Console.WriteLine("選擇業務種類:" + strMemo + "……");
??????? }
??? }
?
??? /// <summary>
??? /// 業務金額識別
??? /// </summary>
??? public class OpMoney : IDo
??? {
??????? public void ShowMessage(string strMemo)
??????? {
??????????? Console.WriteLine("選擇金額數:" + strMemo + "……");
??????? }
??? }
?
??? /// <summary>
??? /// 業務執行
??? /// </summary>
??? public class Submit : IDo
??? {
??????? public void ShowMessage(string strMemo)
??????? {
??????????? Console.WriteLine("操作完成!"+strMemo);
??????? }
??? }
(三)銀行柜員機(外觀)
//柜員機
??? public class Cash
??? {
??????? public string M1 { get; set; }
??????? public string M2 { get; set; }
??????? public string M3 { get; set; }
??????? public string M4 { get; set; }
?
??????? IDo _card = new Card();
??????? IDo _optype = new OpType();
??????? IDo _opmoney = new OpMoney();
??????? IDo _submit = new Submit();
?
??????? public void Do()
??????? {
??????????? _card.ShowMessage(M1);
??????????? _optype.ShowMessage(M2);
??????????? _opmoney.ShowMessage(M3);
??????????? _submit.ShowMessage(M4);
??????? }
??? }
(四)測試
public void TestFacade()
??? {
? ??????Cash cash = new Cash { M1="建行卡",M2="取款",M3="100元錢",M4="打印憑條并退卡" };
?
??????? cash.Do();
}
?
結果:
?
插入銀行卡:建行卡……
選擇業務種類:取款……
選擇金額數:100元錢……
操作完成!打印憑條并退卡
?
在軟件開發系統中,客戶程序經常會與復雜系統的內部子系統之間產生耦合,而導致客戶程序隨著子系統的變化而變化。那么如何簡化客戶程序與子系統之間的交互接口?如何將復雜系統的內部子系統與客戶程序之間的依賴解耦?
為子系統中的一組接口提供一個一致的界面,Facade模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。《設計模式》GOF
?
為子系統提供了一個更高層次、更簡單的接口,從而降低了子系統的復雜度和依賴。這使得子系統更易于使用和管理。
?
外觀是一個能為子系統和客戶提供簡單接口的類。當正確的應用外觀,客戶不再直接和子系統中的類交互,而是與外觀交互。外觀承擔與子系統中類交互的責任。實際上,外觀是子系統與客戶的接口,這樣外觀模式降低了子系統和客戶的耦合度
?
?
轉載于:https://www.cnblogs.com/jams742003/archive/2009/12/07/1618455.html
總結
以上是生活随笔為你收集整理的模式实例之——外观实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ext JS Designer 1.0.
- 下一篇: 泰拉瑞亚丛林神庙怎么进?