【架构设计】模块化-面向接口编程

模块化的优势

  1. 结构清晰:业务独立,代码实现分离
  2. 便于协作:耦合度低,不会影响团队其他成员的开发进度
  3. 便于维护:各模块管理自身代码、布局、资源,不影响主工程

模块化的特点

高内聚,低耦合

常见的模块化方法

  1. 所有模块都放在一个工程里实现
  2. 每个模块都放在一个独立工程中实现

模块的划分

从高到低

  1. 业务层
  2. 平台能力层
  3. 基础层

模块间的通信

  1. 直接依赖
  2. 事件或广播通信
  3. 路由通信
  4. 面向接口通信

具体实现

直接依赖

实现简单,耦合严重,不方便维护与开发。

事件和广播通信

EventBus:事件总线型通信框架,十分灵活,采用注解方式实现,但是难以追溯事件。

广播:一个模块中发送广播数据,感兴趣的模块进行注册广播接收数据。使用这种方式,资源开销会较大。

总结:

事件通信、广播都比较灵活,并且模块之间无偶尔度。但是,代码的可读性差,难以追溯事件,不推荐。

路由通信

模块与模块之间不存在依赖关系,而是各自运作

面向接口编程

核心思想是,先定义底层接口模块,也就是通信的协议与功能约定,是提供方实现对应的功能与能力。

在架构开发过程中,无需关注具体实现,开发中可以通过接口快速制定协议,与提供能力的API。

面向接口编程的好处

灵活性高,无具体依赖,实现层可以任意更改与切换。

面向接口编程的步骤

  1. 定义接口
  2. 提供方实现接口
  3. 使用方都通过服务工厂获取服务使用

为什么有了路由通信,还需要使用面向接口编程呢?

路由通信,虽然解决了耦合的问题,但是调用的方法都是静态的。对于传参与返回值只能是基本类型。若是对象需要进行序列化和反序列化,就会对性能产生一定的影响。所以,需要使用面向接口。比如:一个读卡的操作,业务层需要对它进行开关、暂停等操作,通过接口可以很好的返回一个服务控制器,然后直接进行相应的操作即可。

总结:

通过路由通信,可以很好的解决模块间耦合,但是拿不到对象无法持续交互,并且需要序列化,而通过面向接口编程,可以很好的解决这一点,并且代码的可读性较高。但是面向接口又会存在一定的耦合性,也就是依赖了服务侧的API,但是对于收益来说还是值得的。

所以,路由通信+面向接口编程,是比较优秀的解法。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值