外觀模式【C#】

示例代碼爲了儘可能突顯設計模式的特徵,採用了極簡代碼。儘量避免其他代碼對理解設計模式產生干擾

定義:

爲子系統中的一組接口提供一個一致的界面,外觀模式定義了一個高層接口,這個接口使得這一子系統更加容易使用。
簡而言之就是,外觀模式可以使客戶端不用關心各個子系統之間的交互邏輯,它只需要知道擔任“外觀角色”的接口是哪個就足夠了。

結構導圖(引自劉偉老師的博客)

外觀模式結構導圖


代碼:

場景1

某個週六臨近中午時,我餓了!爲了填飽肚子,我只能從牀上爬起來,準備做飯。
要知道,這可不是件容易的事情!畢竟我需要先去菜市場買菜,再洗菜,做菜。裏裏外外折騰起碼也得一小時,才能吃上飯!
沒辦法,銀行卡里沒錢了,沒辦法在線付款點外賣。動手吧!

    class BuyVegetables
    {
        /// <summary>
        /// 買菜
        /// </summary>
        public static void Buy()
        {
            Console.WriteLine("買完菜了。");
        }
    }
    class Cleanout
    {
        /// <summary>
        /// 洗菜
        /// </summary>
        public static void Clean()
        {
            Console.WriteLine("菜都洗好了。");
        }
    }
    class Cooking
    {
        /// <summary>
        /// 做菜
        /// </summary>
        public static void Cook()
        {
            Console.WriteLine("飯菜做好了。");
        }
    }

該忙的都忙完了,可算是可以吃了!

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("我餓了···");
            BuyVegetables.Buy();
            Cleanout.Clean();
            Cooking.Cook();
            Console.WriteLine("吃飽喝足。");
        }
    }

雖然吃的挺過癮,但着實折騰!!!

一週過去了···

又到了週六,又到了臨近中午的時間點,又餓了···
多麼似曾相識的一幕~~~
難道今天我爲了吃頓飯,還要這麼辛苦嗎?
不!因爲我發工資了!銀行卡里有錢了!我可以訂外賣了!!!

場景2

首先,我們得有餐館的聯繫方式

    class Restaurant
    {
        /// <summary>
        /// 外賣服務
        /// </summary>
        public static void Order()
        {
            Console.WriteLine("已收到訂單,正在出餐···");
            BuyVegetables.Buy();
            Cleanout.Clean();
            Cooking.Cook();
            Console.WriteLine("已出餐,正在配送中···");
        }
    }

有了餐館的聯繫方式後,就簡單了。

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("我餓了,點個外賣吧···");
            Restaurant.Order();
            Console.WriteLine("抓起外賣我就猛吃呀!");
            Console.WriteLine("吃飽喝足,順便還打了個飽嗝···");
        }
    }

這下舒坦了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章