.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();


        }
    }

猜你喜欢

转载自blog.csdn.net/nicepainkiller/article/details/83792699
今日推荐