C#桥接模式(Bridge Pattern)是一种结构型设计模式,用于将抽象部分与其具体实现部分独立开来,使它们可以独立变化。
桥接模式的核心思想是在抽象部分和实现部分之间建立一个桥接(Bridge)对象,通过该桥接对象将抽象部分和实现部分连接起来。这样抽象部分和实现部分可以独立进行扩展和变化,而不会相互影响。
桥接模式通常涉及以下几个角色:
抽象部分(Abstraction):定义抽象部分的接口,并维护对实现部分对象的引用。
具体抽象部分(Concrete Abstraction):实现抽象部分的接口,并调用实现部分的方法。它通常是抽象部分的子类。
实现部分(Implementor):定义实现部分的接口,提供基本的操作方法。
具体实现部分(Concrete Implementor):实现实现部分的接口,提供具体的操作方法。它通常是实现部分的子类。
namespace BridgePattern_桥接模式
{/// <summary>
/// 定义消息发送接口
/// </summary>
public interface IMessageSender
{
void SendMessage(string message);
}
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 邮件发送消息
/// </summary>
public class Email : IMessageSender
{
public void SendMessage(string message)
{
Console.WriteLine("Sending Email: " + message);
}
}
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 短信发送消息
/// </summary>
public class SMS : IMessageSender
{
public void SendMessage(string message)
{
Console.WriteLine("Sending SMS: " + message);
}
}
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 消息类型接口
/// </summary>
public abstract class Message
{
protected IMessageSender messageSender;
public Message (IMessageSender messageSender)
{
this.messageSender = messageSender;
}
public abstract void Send();
}
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 文本消息
/// </summary>
public class TextMessage : Message
{
public TextMessage(IMessageSender messageSender):base(messageSender) { }
public override void Send()
{
Console.WriteLine("Sending Text Message...");
messageSender.SendMessage("This is a text message");
}
}
}
namespace BridgePattern_桥接模式
{/// <summary>
/// 图片消息
/// </summary>
public class ImageMessage : Message
{
public ImageMessage(IMessageSender messageSender):base(messageSender) { }
public override void Send()
{
Console.WriteLine("Sending Image Message...");
messageSender.SendMessage("This is an image message");
}
}
}
namespace BridgePattern_桥接模式
{
internal class Program
{
static void Main(string[] args)
{
IMessageSender messageSender1 = new Email();
IMessageSender messageSender2 = new SMS();
Message textMessage1 = new TextMessage(messageSender1);
textMessage1.Send();
Message textMessage2 = new TextMessage(messageSender2);
textMessage2.Send();
Message imageMessage1 = new ImageMessage(messageSender1);
imageMessage1.Send();
Message imageMessage2 = new ImageMessage(messageSender2);
imageMessage2.Send();
Console.Read();
//消息打印
//Sending Text Message...
//Sending Email: This is a text message
//Sending Text Message...
//Sending SMS: This is a text message
//Sending Image Message...
//Sending Email: This is an image message
//Sending Image Message...
//Sending SMS: This is an image message
}
}
}
桥接模式的优点是能够将抽象部分和实现部分独立变化,使得它们可以独立扩展。同时,桥接模式也能降低抽象部分和实现部分之间的耦合度。但它也增加了系统的复杂性,因为需要定义抽象部分和实现部分的接口以及它们之间的桥接对象。因此,在使用桥接模式时需要谨慎考虑,并权衡利弊。
标签:Bridge,messageSender,Sending,桥接,Pattern,message,Message,public From: https://www.cnblogs.com/ZHIZRL/p/17633933.html