如何用UML图描述依赖注入?关于MediatR实现CQRS与Mediator模式的困惑
在UML中描述依赖注入的通用方法及MediatR场景优化
通用UML描述依赖注入的核心方式
- 依赖关系标注:使用带箭头的虚线表示类/接口间的依赖,箭头指向被依赖的类型。比如A类依赖B接口,就画虚线箭头从A指向B,清晰体现谁依赖谁。
- 实现关系体现:用带空心箭头的虚线表示类对接口的实现,比如自定义Handler实现MediatR的
IRequestHandler,就用这条线连接两者。 - DI绑定关系说明:通过UML注释(Note)来标注DI容器的映射规则,比如在接口和其实现类之间添加注释,内容如
DI注册:IRequestHandler<Query, Response> → Handler,注释用虚线连接到对应的接口和类。 - 构造注入细节展示:在类的结构框里明确写出带依赖参数的构造函数,比如
QueryInvoker的构造函数写成+ QueryInvoker(mediator: IMediator),配合依赖关系箭头,直观展示注入的入口。
针对你的MediatR + CQRS场景的UML调整建议
结合你已有的UML图,补充以下内容即可清晰描述DI逻辑:
- 补充依赖与实现关系
- 给
QueryInvoker添加指向IMediator的虚线箭头,标注依赖关系,表示它通过DI注入IMediator实例。 - 用空心虚线箭头连接
Handler到IRequestHandler<Query, Response>,Query到IRequest<Response>,明确它们对MediatR接口的实现。
- 给
- 添加DI注册注释
- 在
IRequestHandler<Query, Response>和Handler之间添加注释,说明DI容器注册:将IRequestHandler<Query, Response>映射到Handler。 - 如果需要展示MediatR自身的DI注册,可在
IMediator和其库内实现类Mediator之间添加类似注释。
- 在
- 明确构造注入入口
- 在
QueryInvoker的类框中添加构造函数定义:+ QueryInvoker(mediator: IMediator),让读者清楚注入是通过构造函数完成的。
- 在
内容的提问来源于stack exchange,提问作者Ari
相关产品推荐
相关产品推荐

