本文主要是介绍【架构设计】模块化-面向接口编程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
模块化的优势
- 结构清晰:业务独立,代码实现分离
- 便于协作:耦合度低,不会影响团队其他成员的开发进度
- 便于维护:各模块管理自身代码、布局、资源,不影响主工程
模块化的特点
高内聚,低耦合
常见的模块化方法
- 所有模块都放在一个工程里实现
- 每个模块都放在一个独立工程中实现
模块的划分
从高到低
- 业务层
- 平台能力层
- 基础层
模块间的通信
- 直接依赖
- 事件或广播通信
- 路由通信
- 面向接口通信
具体实现
直接依赖
实现简单,耦合严重,不方便维护与开发。
事件和广播通信
EventBus:事件总线型通信框架,十分灵活,采用注解方式实现,但是难以追溯事件。
广播:一个模块中发送广播数据,感兴趣的模块进行注册广播接收数据。使用这种方式,资源开销会较大。
总结:
事件通信、广播都比较灵活,并且模块之间无偶尔度。但是,代码的可读性差,难以追溯事件,不推荐。
路由通信
模块与模块之间不存在依赖关系,而是各自运作
面向接口编程
核心思想是,先定义底层接口模块,也就是通信的协议与功能约定,是提供方实现对应的功能与能力。
在架构开发过程中,无需关注具体实现,开发中可以通过接口快速制定协议,与提供能力的API。
面向接口编程的好处
灵活性高,无具体依赖,实现层可以任意更改与切换。
面向接口编程的步骤
- 定义接口
- 提供方实现接口
- 使用方都通过服务工厂获取服务使用
为什么有了路由通信,还需要使用面向接口编程呢?
路由通信,虽然解决了耦合的问题,但是调用的方法都是静态的。对于传参与返回值只能是基本类型。若是对象需要进行序列化和反序列化,就会对性能产生一定的影响。所以,需要使用面向接口。比如:一个读卡的操作,业务层需要对它进行开关、暂停等操作,通过接口可以很好的返回一个服务控制器,然后直接进行相应的操作即可。
总结:
通过路由通信,可以很好的解决模块间耦合,但是拿不到对象无法持续交互,并且需要序列化,而通过面向接口编程,可以很好的解决这一点,并且代码的可读性较高。但是面向接口又会存在一定的耦合性,也就是依赖了服务侧的API,但是对于收益来说还是值得的。
所以,路由通信+面向接口编程,是比较优秀的解法。
这篇关于【架构设计】模块化-面向接口编程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!