使用桥接模式在 C# 中实现一个消息发送系统
|
admin
2025年5月20日 20:36
本文热度 74
|
前言
你了解桥接模式吗?
桥接模式是一种结构型设计模式,其核心思想是将抽象部分与实现部分分离,使得二者可以独立变化。
这种模式特别适用于需要在多个维度上进行扩展或变化的场景。
今天我跟大家分享一个使用桥接模式在 C# 中实现一个消息发送系统的例子。
核心思想
桥接模式的核心思想是将一个大类或一系列紧密相关的类拆分为两个独立的层次——抽象部分和实现部分。
这样做的好处是可以让这两个层次独立地扩展,而不会互相影响。
结构和实现
- 首先,需要定义一个接口(Implementor)来表示实现部分,这个接口需要定义实现抽象类的方法,但不包含任何抽象类的逻辑
- 其次,创建不同的具体的实现类(ConcreteImplementor)
- 然后,定义一个抽象类(Abstraction),它包含对实现部分的引用,并提供了客户端的操作方法
- 最后,客户端代码使用抽象类,而无需关心具体的实现细节
具体结构如下图:
使用桥接模式实现的消息发送系统
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();
}
}
总结
桥接模式在以下情况下特别有用:
- 当你需要开发一个可以在不同平台上运行的应用程序时,桥接模式可以隔离平台特定的部分和业务逻辑部分
该文章在 2025/5/21 9:34:08 编辑过