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