雅码轩专栏, 干货, 无废话!
1. 区分Client模块与Core模块
-
Client: 表示对某个资源, 某个Api, 某个算法, 某个函数, 某个网络接口的调用方
-
Core: 表示某个通用逻辑, 通用资源, 通用接口的提供方
-
Client型代码可copy复制, Core/Server型代码应封装进maven, 防止冗余, 供其他部门同事引入
<dependency/>
-
调用不一定是Http调用, 一个模块的java代码调用另一个模块java代码也是Client -> Core的关系.
例如: 我要编写一个功能, 不断从MQTT接收IOT信号, 存入数据库某张表中, 然后再大屏模块中, 查询此表信息.
此时 项目1 用到了这个功能, 项目2也用到了这个功能.
× 错误的做法: 项目1开发人员找项目2 开发人员把代码copy过来
√ 正确的做法: 将这个接收mqtt信号并入库表的功能封装为一个名为mqtt-iot-core
的模块, 然后项目1和项目2都引入dependency:mqtt-iot-core
模块, 就像搭积木一样, 直接拼过来就能用.
注意:
前提是这个mqtt-iot-core的场景不会有需求变更, 否则他就不是Core型模块, 就不能封装)
各个业务模块查询iot数据的代码, 称为Client型模块, 不建议被其他模块引用.
此篇文章略有难度, 以实际业务场景为准…