使用MediatR库实现中介者模式

目录

介绍

中介者设计模式

.NET中的MediatR库

添加依赖项

定义派生自IRequest接口的类

定义消息处理程序

发送消息


介绍

任何具有相当复杂性的应用程序通常由许多不同的组件组成,这些组件相互通信。组件由业务逻辑组成。

这会产生紧密耦合,因为我们无法在不影响应用程序其余部分的情况下更换或更改一个组件。

中介者设计模式

Mediator是一种行为设计模式,用于管理许多不同组件之间紧密耦合的应用程序的复杂性。它有助于消除物体之间的这种紧密耦合。这使得应用程序易于维护。

对象不是直接相互通信,而是使用mediator对象进行通信。假设我们有组件ABA需要与B沟通。现在,A不是直接与B通信,而是通知mediator对象其与B通信的意图。mediator对象的工作是通知B。这会将所有依赖关系集中到mediator对象上。

Mediator类定义一个notify方法,组件使用该方法触发使用该mediator对象的相应处理程序组件。收到来自发送组件的通知后,mediator识别并调用处理程序组件。

.NET中的MediatR

.NET中,MediatR NuGet包可用于实现该Mediator模式。MediatR库对于在您的. NET应用程序中实现CQRS也很有用。

若要在应用程序中使用它,需要在应用程序中添加MediatR NuGet包。可以使用包管理器控制台将其添加为:

Install-Package MediatR

或使用Nuget包管理器

添加依赖项

下一步是在应用程序中添加MediatR依赖项。在.NET 7应用程序中,可以将依赖项注入为:

builder.Services.AddMediatR(cfg => 
   cfg.RegisterServicesFromAssembly(Assembly.GetExecutingAssembly()));   

使用构造函数注入在类中注入mediator依赖项:

private readonly IMediator _mediator;
  
public MediatorTestController(IMediator mediator)
{
    _mediator = mediator;
}

定义派生自IRequest接口的类

这是我们的信息,客户将传递给mediatR

public class Product : IRequest<string>
 {
     public int Productid { get; set; }
     public Product(int id)
     {
         Productid = id;
     }
 }

定义消息处理程序

这是将处理上述消息对象请求的实际类:

public class ProductHandler : IRequestHandler<Product, string>
{
    public Task<string> Handle(Product request, CancellationToken cancellationToken)
    {
        return Task.FromResult("Sample Order");
    }
}

发送消息

现在,最后一步是调用MediatR对象的send方法。对于此方法,将我们在第一步中定义的消息对象作为参数传递。

正如你所看到的,我们不是直接调用ProductHandler类,而是调用mediator对象中定义的send方法。

现在,当您执行应用程序时,您将收到以下响应:

在这种情况下,这可能没有太大区别,因为我们这里只有一个类,但是想象一下,如果我们的应用程序由数百个类组成。这将大大减少我们类之间的耦合。这是因为我们的类将与mediator对象进行通信,而不是直接相互通信。这意味着我们的类现在将只依赖于一个mediator类,而不是依赖于许多其他类。

https://www.codeproject.com/Articles/5368707/Implementing-Mediator-Pattern-using-the-MediatR-Li

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForms MediatR 是一个在 Windows Forms 应用程序中实现 Mediator 模式的Mediator 模式是一种行为设计模式,通过减少对象之间的直接耦合,允许对象通过一个中介者对象来进行通信。 使用 WinForms MediatR 可以让我们更好地组织和管理 Windows Forms 应用程序中的消息和事件。它提供了一个中央调度器(Mediator),所有的消息和事件都通过这个中央调度器来处理。这样,我们可以将应用程序的不同部分(视图、控制器等)解耦,并降低它们之间的依赖。 WinForms MediatR 的核心是消息和处理程序。消息是应用程序中的事件和请求,而处理程序则是对这些消息进行响应的方法。中央调度器将消息分发给对应的处理程序,并确保它们按照正确的顺序和逻辑来处理。 使用 WinForms MediatR 可以带来很多好处。首先,它简化了代码结构,使得应用程序的逻辑更加清晰和易于维护。其次,它提供了灵活的扩展性,我们可以轻松地添加和移除消息和处理程序,而不会影响到其他部分的代码。此外,它还提供了更好的测试性,我们可以单独对每个处理程序进行单元测试,而不需要依赖其他部分的代码。 总之,WinForms MediatR 是一个很有用的工具,可以帮助我们更好地组织和管理 Windows Forms 应用程序中的消息和事件。通过减少对象之间的直接耦合,它提供了更清晰、易于维护和扩展的代码结构,同时还提供了更好的测试性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值