创作背景:各位朋友,我们继续C#编程模式的交流,本文主要介绍桥接模式。小编查阅了很多资料,大部分文献给出的关于桥接模式的官方定义如下:是一种软设计模式,属于结构型模式,它用于将抽象部分与具体实现部分分离,以便它们可以独立地变化。这种模式通过创建一个连接(桥)来将抽象和实现部分分离,从而允许它们可以独立地进行扩展和变化。
我自己的理解,桥接模式其实就是对产品进行“打碎”,若干个碎片都可以随意变化,然后根据需要,将变化后的所有碎片重组成一个新的产品,这就是桥接模式,它实现了解耦,非常方便产品的多元化创建。
接下来让我们一起看代码。
1、创建抽象产品的类
- ///
- /// 抽象制作零件的类
- ///
- public abstract class MakePart
- {
- ///
- /// 抽象制作方法
- ///
- public abstract string Making();
- }
2、单例化抽象的产品类。
- ///
- /// 单例模式来加载当前的MakePart (sealed 封密类,不可被继承或者重写)
- ///
- public sealed class MakePartSingleton
- {
- ///
- /// 定义静态实例
- ///
- private static MakePart makePart;
- ///
- /// 构造函数,赋值给静态实例
- ///
- ///
- public MakePartSingleton(MakePart iMakePart)
- {
- makePart = iMakePart;
- }
- ///
- /// 返回静态实例
- ///
- ///
- public static MakePart Instance()
- {
- return makePart;
- }
- }
3、创建产品接口。
- ///
- /// 零件接口
- ///
- public abstract class Part
- {
- private MakePart makePart;
-
- public Part()
- {
- makePart = MakePartSingleton.Instance();
- }
-
- public MakePart MakePart()
- {
- return this.makePart;
- }
-
- public abstract string Make();
- }
4、实现抽象的产品。
- ///
- /// 白色零件
- ///
- public class WhitePart : MakePart
- {
- public override string Making()
- {
- return "白色零件";
- }
- }
-
-
- ///
- /// 黑色零件
- ///
- public class BlackPart : MakePart
- {
- public override string Making()
- {
- return "黑色零件";
- }
- }
5、实现具体的产品。
- ///
- /// 大零件
- ///
- public class BigPart : Part
- {
- public override string Make()
- {
- MakePart makePart = this.MakePart();
- return "大号" + makePart.Making();
- }
- }
-
- ///
- /// 小号零件
- ///
- public class SmallPart : Part
- {
- public override string Make()
- {
- MakePart makePart = this.MakePart();
- return "小号" + makePart.Making();
- }
- }
6、客户端调用。
- ///
- /// 桥接模式测试
- ///
- ///
- ///
- private void btn_bridge_Click(object sender, EventArgs e)
- {
- //单例变成白色属性工件
- MakePartSingleton whitePartSingleton = new MakePartSingleton(new WhitePart());
-
- // 大号白色零件
- BigPart bigWhitePart = new BigPart();
- tbox_bridge.Text = bigWhitePart.Make();
-
-
- // 小号白色零件
- SmallPart smallWhitePart = new SmallPart();
- tbox_bridge.Text += "\r\n" + smallWhitePart.Make();
-
- //单例变成黑色属性工件
- MakePartSingleton blackPartSingleton = new MakePartSingleton(new BlackPart());
-
- // 大号黑色零件
- BigPart bigBlackPart = new BigPart();
- tbox_bridge.Text += "\r\n" + bigBlackPart.Make();
-
- // 小号黑色零件
- SmallPart smallBlackPart = new SmallPart();
- tbox_bridge.Text += "\r\n" + smallBlackPart.Make();
- }
7、调用截图如下:

通过上述简单的例程,我们把零件的大小和颜色进行了打碎重组,进而实现桥接模式。希望能够给予各位小伙伴一定的启发。同时也接收各位大手的指正。