大话设计模式-桥接模式
桥接模式
桥接模式将抽象部分和他的实现部分分离,是它们都可以独立地变化。
抽象与他的实现分离并不是说让抽象类与其派生类分离,因为这没有任何意义,实现指的是抽象类和他的派生类用来实现自己对象。
实现系统可能有多角度分裂,每一种分类都有可能变化,那么就把这种多角度分离出来让他们独立变化,减它们之间的耦合。
桥接模式结构演示
实现
abstract class PhoneSoft { public abstract void Run(); }
具体实现
class PhoneGame : PhoneSoft { public override void Run() => Console.WriteLine("运行手机游戏"); } class PhoneMessage : PhoneSoft { public override void Run() => Console.WriteLine("运行手机短信"); }
抽象
abstract class PhoneBrand { protected PhoneSoft soft; public void SetPhoneSoft(PhoneSoft soft) => this.soft = soft; public abstract void Run(); }
被提炼的抽象
class PhoneBrandA : PhoneBrand { public override void Run() => soft.Run(); } class PhoneBrandB : PhoneBrand { public override void Run() => soft.Run(); }
测试
PhoneBrand pb; pb = new PhoneBrandA();//手机品牌A pb.SetPhoneSoft(new PhoneGame());//运行游戏 pb.Run(); pb = new PhoneBrandB();//手机品牌B pb.SetPhoneSoft(new PhoneMessage());//运行短信 pb.Run(); //测试结果 运行手机游戏 运行手机短信