大数跨境
0
0

MASA Framework源码解读-01 MASAFacotry工厂设计(一个接口多个实现的最佳姿势)

MASA Framework源码解读-01 MASAFacotry工厂设计(一个接口多个实现的最佳姿势) dotNET跨平台
2023-03-06
9
导读:在面对一个接口多实现的场景,终于不用再用IEnumerable集合去做各种筛选来实现效果,只需要增加一个工厂类就行了

MASA Framework源码解析:构建工厂设计优化多实现场景

MASA Framework简介

Masa FrameworkMasa Stack系列中用于开发Web系统的框架,支持传统三层架构与领域驱动设计(DDD)的灵活切换,满足企业在不同发展阶段的技术需求。它有效降低因业务扩展导致更换技术框架所产生的成本。

MASA Framework组成结构

MASA Framework主要由三部分构成:BuildingBlocks(抽象层)Contrib(BuildingBlocks的具体实现)Utils(工具库)。通过将常用功能(如多租户、仓储、配置中心等)进行抽象,形成可替换组件,提升系统扩展性。

Masa Framework涵盖19个核心模块,几乎覆盖日常开发所需所有组件,是一个功能完善且高度模块化的开发框架。

Masa Framework底层构建工厂设计

在实际开发中,接口多实现的情况较为常见,例如物流面单申请时需根据不同快递商请求生成运单号,每家快递商调用接口格式各不相同,MASA Framework通过构建工厂模式有效解决了这一问题。

  • 构建工厂的优势:相比传统的依赖注入方式仅能注入IEnumerable集合,再根据具体条件定位实例,Masa Framework通过名称创建对应的实现类,使用上更简洁清晰。

Demo示例解析

  1. 项目创建后安装 Masa.BuildingBlocks.Data.Contracts 组件,并定义物流面单转换的接口和多个实现类。
  2. 构建 BillMessageConvertFactory 类,继承 MasaFactoryBase<IBillMessageConvert, MasaRelationOptions> ,实现按名称动态创建对象。
  3. 添加服务注入扩展方法 IServiceCollectionExtensions ,配置各物流公司名称与具体类型的绑定关系。
  4. 控制器 OutboundController 注入工厂类 IMasaFactory<IBillMessageConvert> ,并根据传入订单ID获取相应的物流公司处理逻辑。
  5. 最终测试结果表明,无需额外判断即可完成对不同类型物流商的支持,调用过程无感切换。

总结

Masa Framework利用工厂模式优雅地解决了接口多实现带来的复杂度控制问题,提高代码可读性和可维护性,同时其模块化设计理念使得开发者可以自由扩展或替换原有实现。

【声明】内容源于网络
0
0
dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
内容 908
粉丝 0
dotNET跨平台 专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
总阅读14.9k
粉丝0
内容908