-
Notifications
You must be signed in to change notification settings - Fork 1
CkTools.Nova
王学懿 edited this page May 24, 2024
·
1 revision
这个库主要的目的是降低业务复杂度,提高可读性。使用中间件思想、链式、建造者模式制作一些基础结构,然后在结构之上去编写开发业务代码。
方式 | 代表 | 特点 | 适用场景 |
---|---|---|---|
业务中间件化 | Step特性 | 顺序可配、需要IOC | 单一目的,但过程复杂 比如:更新用户名,需要通知N个子模块,甚至需要先更新A模块后拿到某个token后去更新B模块 |
方法执行器 | ActionExecuter | 轻量化 | 中小型需求均可,适用性广 比如:将某份数据同步到B系统,数据存在时不更新,数据不同时按某种方式更新 |
- 框架将业务逻辑做为它的处理对象,也就是玩委托
- 将业务代码拆成一块一块,像搭积木的方式一点点拼出要的效果。
- 修改其中的一块拼图时,不影响其它代码,影响范围很小
- 理论上0副作用,同一个实例执行多次后效果一样
- 调用方式与传统的均不同:
-
业务中间件化
在编码时非常像开发http中间件
;调用时,需要先从DI中获取第1个实例,然后执行; -
ActionExecuter
在遍码时,需要在构造方法中配置调用顺序;调用时,需要先实例化一个对应执行器实例出来,调用Execute
方法执行,再取出结果。
适用场景:
- 业务中间件化:侧重于大型、超大型复杂情况(300行代码+),构建它的过程和开发http中间件很相似。每个中间件内部可以使用
方法执行器
来继续编写,也可以使用传统方式。 - 方法执行器:侧重于中小型复杂情况,使用时最好懂一点点链式、函数式思想(不会也行),可以帮助你更好梳理逻辑
环境依赖:
- 业务中间件化:需要IOC环境才能自动计算执行顺序
- 方法执行器:IOC环境或直接new均可,更灵活
- 传统:代码行1234...去执行,所有的逻辑可以从上向下一直看。好处是所有人理论上可以看懂代码,坏处是修改代码时你得阅读完所有的代码才能确定影响范围
- 新式:编码时搭积木,调试阅读时需要找到配置顺序的地方,然后再跳转到具体的代码。好处是代码清晰、业务清晰、修改代码影响范围小,坏处时看代码多一步去看顺序,需要适应一下。