天天看點

模式執行個體之——外觀執行個體

場景:銀行櫃員機取錢或存錢

描述:從銀行的櫃員機取了100塊錢

(一)子系統

/// <summary>

    /// 子系統抽象

    /// </summary>

    public interface IDo

    {

        void ShowMessage(string strMemo);

    }

(二)各個子系統

    /// 卡類别識别

    public class Card : IDo

        public void ShowMessage(string strMemo)

        {

            Console.WriteLine("插入銀行卡"+strMemo+"……");

        }

    /// <summary>

    /// 業務各類識别

    public class OpType : IDo

            Console.WriteLine("選擇業務種類:" + strMemo + "……");

    /// 業務金額識别

    public class OpMoney : IDo

            Console.WriteLine("選擇金額數:" + strMemo + "……");

    /// 業務執行

    public class Submit : IDo

            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

為子系統提供了一個更高層次、更簡單的接口,進而降低了子系統的複雜度和依賴。這使得子系統更易于使用和管理。

外觀是一個能為子系統和客戶提供簡單接口的類。當正确的應用外觀,客戶不再直接和子系統中的類互動,而是與外觀互動。外觀承擔與子系統中類互動的責任。實際上,外觀是子系統與客戶的接口,這樣外觀模式降低了子系統和客戶的耦合度

部落格園大道至簡

<a href="http://www.cnblogs.com/jams742003/" target="_blank">http://www.cnblogs.com/jams742003/</a>

轉載請注明:部落格園

繼續閱讀