当前位置: 首页 > article >正文

【C#设计模式(7)——桥接模式(Bridge Pattern)】

前言

桥接模式的主要作用是将抽象部分和实现部分分离,使它们可以独立地进行扩展、修改和重用,从而增加了系统的灵活性和可维护性。

代码

// 桥接口
public interface IBridge
{
    void Create();
}
//石桥
public class StoneBridge : IBridge
{
    public void Create()
    {
        Console.WriteLine("The bridge is made of stone.");
    }
}
//刚桥
public class SteelBridge : IBridge
{
    public void Create()
    {
        Console.WriteLine("The bridge is made of steel.");
    }
}
//抽象桥类型
public abstract class BridgeType 
{
    protected IBridge bridge;
    protected BridgeType(IBridge bridge)
    {
        this.bridge = bridge;
    }
    public abstract void Create();
}
//拱桥类型
public class ArchBridge : BridgeType
{
    public ArchBridge(IBridge bridge) : base(bridge){}

    public override void Create()
    {
        Console.WriteLine("Creating an arch bridge. ");
        bridge.Create();
    }
}
//钢架桥
public class RigidFrameBridge : BridgeType
{
    public RigidFrameBridge(IBridge bridge) : base(bridge){}
    public override void Create()
    {
        Console.WriteLine("Created a steel bridge.");
        bridge.Create();
    }
}

/*
 * 结构型模式:Structural Pattern
 * 桥接模式:Bridge Pattern
 */
internal class Program
{
    static void Main(string[] args)
    {
        IBridge stone = new StoneBridge();
        IBridge steel = new SteelBridge();

        BridgeType archBridge = new ArchBridge(stone);
        BridgeType rigidFrameBride = new RigidFrameBridge(steel);

        archBridge.Create();
        rigidFrameBride.Create();
        Console.ReadLine();
    }
}

运行结果

在这里插入图片描述


http://www.kler.cn/a/398033.html

相关文章:

  • Zotero 7本地pdf文件名自适应中英文格式
  • MySQL中Flashback(闪回)技术
  • 力扣刷题日记之150.逆波兰表达式求值
  • JMeter与大模型融合应用之JMeter日志分析服务化实战应用
  • 容器安装gitlab
  • 麒麟系统下docker搭建jenkins
  • wireshark演进之路——从GTK到Qt
  • 分布式,微服务,SpringCloudAlibaba,nacos,gateway,openFeign
  • Docker内存溢出报错问题解决
  • SpringMVC数据校验、数据格式化处理、国际化设置
  • 网络IP地址会经常换吗?深入解析与实操指南
  • 金山云大数据面试题及参考答案
  • Python爬虫定义入门知识
  • 【Linux庖丁解牛】—Linux基本指令(下)!
  • 黑马智数Day7
  • 对称加密算法DES的实现
  • 130. CSS2DRenderer(HTML标签)
  • 核心期刊论文供参考(中科院三区、可转)
  • lua实现雪花算法
  • 大数据中的时序数据,以及时序数据架构设计解决方案
  • 2024年最后一期数字孪生专项学习!!
  • Android Framework AMS(14)ContentProvider分析-1(CP组件应用及开机启动注册流程解读)
  • Ceph的pool有两种类型
  • 【基础算法】栈
  • 对链表进行插入排序
  • 2024年11月16日Github流行趋势