设计模式-桥接模式
前言
点击查看:设计模式系列
桥接模式(Bridge)
定义:将抽象部分与实现部分分离,使它们都可以独立的变化。
理解:为啦解决一个对象变化而影响多个对象跟着变化,需要把具体实现对象抽象化,使降低对象和变化因素的耦合度,提高系统的可维护性和扩展性。
举例:
手机系统的生态圈问题:
啰嗦点:众所周知wp的生态圈相对与有些系统较差,各位需努力,诺基亚走下神坛,wp要走上神坛,顶一下哈。
wp/ios系统类:运行软件,可承载本运行环境下的任何软件,如果新增一个系统,软件就要多做一个系统的版本
weixin/kuwo软件类:开始运行软件,如果新加一块软件,就要做众多系统版本的。
实现:在iso和wp系统中运行,各种不同的软件。
类图:
软件代码:
//软件 public interface ISoftWare { void start(); } //Kuwo public class Kuwo : ISoftWare { public void start() { Console.WriteLine("听音乐,用酷我!"); } } //WeiXin public class WeiXin : ISoftWare { public void start() { Console.WriteLine("让你我的距离更近!"); } }
操作系统代码
//操作系统,跑软件 public abstract class System { public abstract void Run(ISoftWare software); } //Wp public class WinPhone : System { public override void Run(ISoftWare software) { Console.WriteLine("Winphone系统,给你想要的;"); software.start(); } } //Ios public class Ios : System { public override void Run(ISoftWare software) { Console.WriteLine("Ios系统,给你想不到的;"); software.start(); } }
客户端代码
public static void Main() { ISoftWare weixin = new WeiXin(); ISoftWare kuwo = new Kuwo(); //Wp系统 System WpSys = new WinPhone(); WpSys.Run(weixin); WpSys.Run(kuwo); //IOS系统 System IosSys = new Ios(); IosSys.Run(weixin); IosSys.Run(kuwo); Console.Read(); }
桥接模式总结
一、桥接模式的参与者包括:
抽象类:定义类的接口
具体类:继承抽象类,并实现扩展他
实现着:接口
具体实现着:接口的实现类
二、桥接模式的作用
系统,软件犹如两个层次,可避免两个层次间建立高耦合的链接,同时也实现啦抽象和实现分离,使系统和软件变化不会受到对方的影响,也更容易向客户端程序隐藏实现的细节。
此模式是所有模式中,最复杂的一种之一,要好好体会,好好理解,好好想想在具体项目中如何运用。