共计 1063 个字符,预计需要花费 3 分钟才能阅读完成。
作者:AMOS0626
起源:https://my.oschina.net/AmosWa…
1. 单模块
劣势
疾速上手,后期开发效率高。
劣势
要想实现传统的三层架构(web/service/dao
),多采纳分包,分包带来个问题就是,包之间边界束缚不够。
失常来说,三层架构之间是有依赖关系的,dao --> service --> web
,依赖是单向的。
举个例子:前端申请的 xxxRequest
应该放哪呢,放 web
还是 service
,放 web
的话,service
应该是不能拜访的,所以怎么束缚呢?
再极其一点,dao
不能调用 service
吧,但我的项目中最不缺的就是长期计划,所以怎么束缚呢?
2. 多模块(重点来了)
劣势
束缚能力,模块间援用关系是明确的,我的项目架构更清晰。
劣势
简略说,从头搭着可能慢点,用上模板都差不多。
首推阿里 COLA:https://github.com/alibaba/COLA
自己联合 阿里 COLA4.0 实现了一个,模块构造如下
think-cola
- start(启动我的项目)
- think-client(api、dto)
- think-controller(controller,调用 app)
- think-app(校验、封装、执行,调用 domain、infrastructure)
- think-domain(DDD 畛域模型,也可裸露接口,由 infrastructure 实现)
- think-infrastructure(db、rpc、search、防腐)
我的项目地址:https://github.com/AmosWang06…
3. 怎么选?
作为利用级架构,小我的项目,2~3 集体开发的,单模块可能就足够,前提是每个人都对架构有意识,集体约束力很重要;
其余均倡议多模块,长期来看,束缚是第一生产力,架构间接影响重构的老本。
援用《代码精进之路:从码农到工匠》中的两段话结尾:
- 要记住,留给公司一个不便保护、整洁优雅的代码库,是咱们技术人员最高技术使命,也是咱们对公司做出的最大技术奉献;
- 【避免破窗】首先咱们要有一套标准,并尽量恪守标准,不要做“突破第一扇窗”的人;其次,发现“破窗”要及时修复,不要让问题进一步好转。
近期热文举荐:
1.1,000+ 道 Java 面试题及答案整顿 (2021 最新版)
2. 别在再满屏的 if/ else 了,试试策略模式,真香!!
3. 卧槽!Java 中的 xx ≠ null 是什么新语法?
4.Spring Boot 2.5 重磅公布,光明模式太炸了!
5.《Java 开发手册(嵩山版)》最新公布,速速下载!
感觉不错,别忘了顺手点赞 + 转发哦!