1. 程式人生 > >.net設計模式 (橋接模式)學習筆記

.net設計模式 (橋接模式)學習筆記

運用設計模式只是為了解決一類問題的,當解決掉當前一類問題,通常會在解決這個問題時候 帶來其他問題  合理應用揚長避短


結構性設計模式:

                          .net設計模式 (橋接模式)學習筆記   

概要: 變化封裝,組合複用 。優點 易於擴充。缺點 是  生產環節 變複雜了(多個組合)。使用者需要了解 跟多的細節。

 

現在 有個業務需求,我們為 三臺時候 分別 刷機三種系統, 3*3 就是9中對應的機器和系統,要是用簡單 的 整合 會有9中型別檔案,在 繼續新新增  功能 那將是 乘的 關係。 要是用橋接的方式 就是 加 的關係

    /// <summary>
    /// 作業系統
    /// </summary>
    public interface ISyetem
    {
        string Version();

        string OS();
    }


    class AndroidSystem : ISyetem
    {
        public string OS()
        {
            return "Android";
        }

        public string Version()
        {
            return "6.0";
        }
    }

    class IOSSystem : ISyetem
    {
        public string OS()
        {
            return "IOS";
        }

        public string Version()
        {
            return "9.3";
        }
    }



    class WinSystemcs : ISyetem
    {
        public string OS()
        {
            return "Winsow";
        }

        public string Version()
        {
            return "10.0";
        }
    }


    /// <summary>
    /// 手機的基類
    /// </summary>
    abstract class BasePhone
    {
        public ISyetem syetem { get; set; }

        public abstract void Call();

        public abstract void SendMessage();
    }



    class GalaxyBridge : BasePhone
    {
        public override void Call()
        {
            Console.WriteLine(this.syetem.OS());
        }

        public override void SendMessage()
        {
            Console.WriteLine(this.syetem.Version());
        }
    }

.
    class IPhoneBridge : BasePhone
    {
        public override void Call()
        {
            Console.WriteLine(this.syetem.OS());
        }

        public override void SendMessage()
        {
            Console.WriteLine(this.syetem.Version());
        }
    }



    class LumiaBridge : BasePhone
    {
        public override void Call()
        {
            Console.WriteLine(this.syetem.OS());
        }

        public override void SendMessage()
        {
            Console.WriteLine(this.syetem.Version());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ISyetem ssytemAndroid   = new AndroidSystem();
            ISyetem ssytemIOS       = new IOSSystem();

            ISyetem ssytemWin       = new WinSystemcs();



            BasePhone phoneIOS     = new IPhoneBridge();
            BasePhone phoneAndroid = new GalaxyBridge();
            BasePhone phoneWin     = new LumiaBridge();


            phoneIOS.syetem = ssytemAndroid;
            phoneIOS.Call();
            phoneIOS.SendMessage();


            phoneIOS.syetem = ssytemIOS;
            phoneIOS.Call();
            phoneIOS.SendMessage();


        }
    }