LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

使用桥接模式在 C# 中实现一个消息发送系统

admin
2025年5月20日 20:36 本文热度 90

前言

你了解桥接模式吗?

桥接模式是一种结构型设计模式,其核心思想是将抽象部分与实现部分分离,使得二者可以独立变化。

这种模式特别适用于需要在多个维度上进行扩展或变化的场景。

今天我跟大家分享一个使用桥接模式在 C# 中实现一个消息发送系统的例子。

核心思想

桥接模式的核心思想是将一个大类或一系列紧密相关的类拆分为两个独立的层次——抽象部分和实现部分。

这样做的好处是可以让这两个层次独立地扩展,而不会互相影响。

结构和实现

  1. 首先,需要定义一个接口(Implementor)来表示实现部分,这个接口需要定义实现抽象类的方法,但不包含任何抽象类的逻辑
  2. 其次,创建不同的具体的实现类(ConcreteImplementor)
  3. 然后,定义一个抽象类(Abstraction),它包含对实现部分的引用,并提供了客户端的操作方法
  4. 创建不同的具体的继承抽象类的类型
  5. 最后,客户端代码使用抽象类,而无需关心具体的实现细节

具体结构如下图: 

使用桥接模式实现的消息发送系统

using System;

// 1. 定义实现部分接口 - 消息发送方式
public interface IMessageSender
{
    void SendMessage(string message);
}

// 2.1 具体实现类1 - 电子邮件发送
public class EmailSender : IMessageSender
{
    public void SendMessage(string message)
    {
        Console.WriteLine($"通过电子邮件发送: {message}");
    }
}

// 2.2 具体实现类2 - SMS发送
public class SmsSender : IMessageSender
{
    public void SendMessage(string message)
    {
        Console.WriteLine($"通过SMS发送: {message}");
    }
}

// 3. 定义抽象类 - 消息
public abstract class Message
{
    protected IMessageSender messageSender;

    // 在构造函数中引用实现接口
    public Message(IMessageSender messageSender)
    {
        this.messageSender = messageSender;
    }

    // 提供客户端操作方法
    public abstract void Send();
}

// 4.1 具体的抽象类继承 - 普通消息
public class NormalMessage : Message
{
    private string content;

    public NormalMessage(string content, IMessageSender messageSender
        : base(messageSender)

    {
        this.content = content;
    }

    public override void Send()
    {
        messageSender.SendMessage($"普通消息: {content}");
    }
}

// 4.1 具体的抽象类继承 - 紧急消息
public class UrgentMessage : Message
{
    private string content;

    public UrgentMessage(string content, IMessageSender messageSender)
        : base(messageSender)

    {
        this.content = content;
    }

    public override void Send()
    {
        messageSender.SendMessage($"紧急! {content}");
    }
}

// 5. 客户端使用
class Program
{
    static void Main(string[] args)
    {
        // 创建不同的消息发送方式
        IMessageSender emailSender = new EmailSender();
        IMessageSender smsSender = new SmsSender();

        // 创建普通消息并通过电子邮件发送
        Message normalEmailMessage = new NormalMessage("这是一个测试消息", emailSender);
        normalEmailMessage.Send();

        // 创建紧急消息并通过SMS发送
        Message urgentSmsMessage = new UrgentMessage("系统即将关闭", smsSender);
        urgentSmsMessage.Send();

        // 创建紧急消息并通过电子邮件发送
        Message urgentEmailMessage = new UrgentMessage("请立即回复", emailSender);
        urgentEmailMessage.Send();
    }
}

总结

桥接模式在以下情况下特别有用:

  1. 当有多个变化维度,使用继承会导致类爆炸时
  2. 当你想要避免抽象和它的实现之间的永久绑定时
  3. 当你需要开发一个可以在不同平台上运行的应用程序时,桥接模式可以隔离平台特定的部分和业务逻辑部分

该文章在 2025/5/21 9:34:08 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved