• C#编程模式之桥接模式(Bridge)


            创作背景:各位朋友,我们继续C#编程模式的交流,本文主要介绍桥接模式。小编查阅了很多资料,大部分文献给出的关于桥接模式的官方定义如下:是一种软设计模式,属于结构型模式,它用于将抽象部分与具体实现部分分离,以便它们可以独立地变化。这种模式通过创建一个连接(桥)来将抽象和实现部分分离,从而允许它们可以独立地进行扩展和变化。

            我自己的理解,桥接模式其实就是对产品进行“打碎”,若干个碎片都可以随意变化,然后根据需要,将变化后的所有碎片重组成一个新的产品,这就是桥接模式,它实现了解耦,非常方便产品的多元化创建。

            接下来让我们一起看代码。

            1、创建抽象产品的类

    1. ///
    2. /// 抽象制作零件的类
    3. ///
    4. public abstract class MakePart
    5. {
    6. ///
    7. /// 抽象制作方法
    8. ///
    9. public abstract string Making();
    10. }

            2、单例化抽象的产品类。

    1. ///
    2. /// 单例模式来加载当前的MakePart (sealed 封密类,不可被继承或者重写)
    3. ///
    4. public sealed class MakePartSingleton
    5. {
    6. ///
    7. /// 定义静态实例
    8. ///
    9. private static MakePart makePart;
    10. ///
    11. /// 构造函数,赋值给静态实例
    12. ///
    13. ///
    14. public MakePartSingleton(MakePart iMakePart)
    15. {
    16. makePart = iMakePart;
    17. }
    18. ///
    19. /// 返回静态实例
    20. ///
    21. ///
    22. public static MakePart Instance()
    23. {
    24. return makePart;
    25. }
    26. }

            3、创建产品接口。

    1. ///
    2. /// 零件接口
    3. ///
    4. public abstract class Part
    5. {
    6. private MakePart makePart;
    7. public Part()
    8. {
    9. makePart = MakePartSingleton.Instance();
    10. }
    11. public MakePart MakePart()
    12. {
    13. return this.makePart;
    14. }
    15. public abstract string Make();
    16. }

            4、实现抽象的产品。

    1. ///
    2. /// 白色零件
    3. ///
    4. public class WhitePart : MakePart
    5. {
    6. public override string Making()
    7. {
    8. return "白色零件";
    9. }
    10. }
    11. ///
    12. /// 黑色零件
    13. ///
    14. public class BlackPart : MakePart
    15. {
    16. public override string Making()
    17. {
    18. return "黑色零件";
    19. }
    20. }

            5、实现具体的产品。

    1. ///
    2. /// 大零件
    3. ///
    4. public class BigPart : Part
    5. {
    6. public override string Make()
    7. {
    8. MakePart makePart = this.MakePart();
    9. return "大号" + makePart.Making();
    10. }
    11. }
    12. ///
    13. /// 小号零件
    14. ///
    15. public class SmallPart : Part
    16. {
    17. public override string Make()
    18. {
    19. MakePart makePart = this.MakePart();
    20. return "小号" + makePart.Making();
    21. }
    22. }

            6、客户端调用。

    1. ///
    2. /// 桥接模式测试
    3. ///
    4. ///
    5. ///
    6. private void btn_bridge_Click(object sender, EventArgs e)
    7. {
    8. //单例变成白色属性工件
    9. MakePartSingleton whitePartSingleton = new MakePartSingleton(new WhitePart());
    10. // 大号白色零件
    11. BigPart bigWhitePart = new BigPart();
    12. tbox_bridge.Text = bigWhitePart.Make();
    13. // 小号白色零件
    14. SmallPart smallWhitePart = new SmallPart();
    15. tbox_bridge.Text += "\r\n" + smallWhitePart.Make();
    16. //单例变成黑色属性工件
    17. MakePartSingleton blackPartSingleton = new MakePartSingleton(new BlackPart());
    18. // 大号黑色零件
    19. BigPart bigBlackPart = new BigPart();
    20. tbox_bridge.Text += "\r\n" + bigBlackPart.Make();
    21. // 小号黑色零件
    22. SmallPart smallBlackPart = new SmallPart();
    23. tbox_bridge.Text += "\r\n" + smallBlackPart.Make();
    24. }

            7、调用截图如下:

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

  • 相关阅读:
    java-php-net-python-房产交易资金管理系统计算机毕业设计程序
    【Hack The Box】linux练习-- Paper
    粒子群算法(PSO)优化RBF神经网络实践
    分享使用百度EasyDL实现地质灾害预警
    01UE4 C++ 入门【初识c++类】
    JAVA开发管理(敏捷如何解决实际痛点问题)
    iOS打包 rebuild from bitcode对ipa大小的影响
    【智能优化算法】基于阴阳对优化算法求解单目标优化问题附matlab代码 Yin Yang Pair Optimization
    创业的第125天——随记
    python项目2to3方案预研
  • 原文地址:https://blog.csdn.net/weixin_50236846/article/details/138076984