zoukankan      html  css  js  c++  java
  • 桥接模式

    桥接模式应用:当应该m和n变化就需要建立m*n个类。

    利用桥接我们封装变化,就只需要建立M+N个类

    主方法

    namespace 桥接模式
    {
        /// <summary>
        /// 桥接模式:
        /// 当我们需要小米ios、小米安卓、苹果ios、苹果安卓手机的时候,对应要件4个类。
        /// 这个时候我们分析手机和操作系统是变化的,需要建m*n个类(m:手机品牌个数 n:系统个数)
        /// 
        /// 这个时候我们可以封装变化
        /// 在手机中定义一个系统字段,外部来赋值,这样就只用建m+n个类
        /// </summary>
        class Program
        {
            static void Main(string[] args)
            {
                //苹果的ios系统手机
                BasePhone iphone = new Iphone();
                iphone.system = new IOS().GetSystem();
                iphone.Call();
                iphone.Message();
    
    
                //小米的ios系统手机
                BasePhone xiaoMi = new XiaoMi();
                xiaoMi.system = new IOS().GetSystem();
                xiaoMi.Call();
                xiaoMi.Message();
    
                //小米的安卓系统手机
                BasePhone xiaoMi = new XiaoMi();
                xiaoMi.system = new Android().GetSystem();
                xiaoMi.Call();
                xiaoMi.Message();
                Console.ReadKey();
            }
        }
    }

    新建手机类

    namespace 桥接模式
    {
        public abstract class BasePhone
        {
            public string system = null;
            public abstract void Call();
            public abstract void Message();
        }
    }
    
        public class Iphone:BasePhone
        {
            public override void Call()
            {
                Console.WriteLine("我这个是{0}手机,用的是{1}操作系统来{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
            }
    
            public override void Message()
            {
                Console.WriteLine("我这个是{0}手机,用的是{1}操作系统来{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
            }
        }
    
        public class XiaoMi:BasePhone
        {
            public override void Call()
            {
                Console.WriteLine("我这个是{0}手机,用的是{1}操作系统来{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
            }
    
            public override void Message()
            {
                Console.WriteLine("我这个是{0}手机,用的是{1}操作系统来{2}", this.GetType().Name, base.system, new System.Diagnostics.StackTrace().GetFrame(0).GetMethod().Name);
            }
        }

    新建系统类

    namespace 桥接模式
    {
        public interface ISystem
        {
            string GetSystem();
        }
    }
    
        public class IOS:ISystem
        {
            public string GetSystem()
            {
                return this.GetType().Name;
            }
        }
    
        public class Android:ISystem
        {
            public string GetSystem()
            {
                return this.GetType().Name;
            }
        }
  • 相关阅读:
    课程设计之第一次冲刺---第三天(11.13-11.14)
    课程设计之第一次冲刺---第二天(11.12)
    课程设计之第一阶段冲刺---第一天(11.11)
    团队贡献分分配
    尸体解剖
    回答自己的提问
    第三阶段冲刺--第2天
    第三阶段冲刺--第1天
    对其他组评价的反馈
    《一个程序猿的生命周期》读后感
  • 原文地址:https://www.cnblogs.com/zhuyapeng/p/7074846.html
Copyright © 2011-2022 走看看