中介者模式是一种行为型设计模式,它用于减少对象之间的直接通信,并通过一个中介者对象来协调它们之间的交互。中介者模式通过将对象之间的通信集中在一个中介者对象中,从而降低了对象之间的耦合性,使得系统更加灵活和可维护。
中介者模式包含以下几个角色:
假设我们正在开发一个聊天室应用程序,该应用程序包含多个用户(同事)之间的聊天功能。当一个用户发送消息时,其他用户应该能够收到消息并作出相应的反应。我们可以使用中介者模式来实现这个聊天室应用程序。
我们需要定义同事接口IUser
:
C#public interface IUser
{
void SendMessage(string message);
void ReceiveMessage(string message);
}
我们需要定义中介者接口IMediator
:
C#public interface IMediator
{
void SendMessage(string message, IUser sender);
void AddUser(IUser user);
}
然后,我们可以创建具体中介者类ChatRoom
,实现中介者接口:
C#public class ChatRoom : IMediator
{
private List<IUser> _users;
public ChatRoom()
{
_users = new List<IUser>();
}
public void SendMessage(string message, IUser sender)
{
foreach (var user in _users)
{
if (user != sender)
{
user.ReceiveMessage(message);
}
}
}
public void AddUser(IUser user)
{
_users.Add(user);
}
}
然后,我们可以创建具体同事类User
,实现同事接口:
C#public class User : IUser
{
private IMediator _mediator;
private string _name;
public User(IMediator mediator, string name)
{
_mediator = mediator;
_name = name;
}
public void SendMessage(string message)
{
_mediator.SendMessage(message, this);
}
public void ReceiveMessage(string message)
{
Console.WriteLine($"{_name} received message: {message}");
}
}
现在,我们可以在客户端代码中使用中介者模式来实现聊天室应用程序:
C#static void Main(string[] args)
{
var chatRoom = new ChatRoom();
var user1 = new User(chatRoom, "User1");
var user2 = new User(chatRoom, "User2");
var user3 = new User(chatRoom, "User3");
chatRoom.AddUser(user1);
chatRoom.AddUser(user2);
chatRoom.AddUser(user3);
user1.SendMessage("Hello, everyone!");
}
以上是关于中介者模式的示例代码,通过使用中介者模式,我们可以将聊天室应用程序中的用户对象解耦,并通过中介者对象来协调它们之间的通信。中介者模式可以用于各种场景,例如多个对象之间的协作、GUI组件之间的交互等。希望本文对你理解中介者模式有所帮助。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!