首页 > 代码库 > 桥接模式
桥接模式
桥接模式应用:当应该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; } }
桥接模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。