桥接模式
Posted zhuyapeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了桥接模式相关的知识,希望对你有一定的参考价值。
桥接模式应用:当应该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; } }
以上是关于桥接模式的主要内容,如果未能解决你的问题,请参考以下文章