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;
            }
        }
  • 相关阅读:
    jq ajax注册检查用户名
    jq ajax页面交互
    Digit Counting UVA – 1225
    Molar mass UVA – 1586
    P1571 眼红的Medusa
    A. Digits Sequence Dividing
    Codeforces Round #535 (Div. 3) a题
    Digit Generator UVA – 1583
    Good Bye 2018 B
    电梯 HDU – 1008
  • 原文地址:https://www.cnblogs.com/zhuyapeng/p/7074846.html
Copyright © 2011-2022 走看看