带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(1)https://developer.aliyun.com/article/1339989?groupCode=taobaotech
开发规约之术
设计规约
传统分层架构
传统分层架构通过Controller,Service,Manager, DAO层来组织业务逻辑,通过贫血模型来传递上下文数据, 所有的业务逻辑不需要考虑怎么组织,统统往Manager和Service中写。如果遇到更加复杂的逻辑,那就加一些设 计模式来处理(本质还是封装Service和Manager)。这种方式属于面向过程开发的事务脚本模式,该方式在一些 比较简单的CRUD场景下比较适用,但当逻辑越来越复杂的时候Manager和Service会越来越膨胀和难以维护。
举个例子,我们使用ServiceItemService(服务项相关服务)来处理服务项相关的逻辑,我们需要维护以下层次:
- 存储逻辑;
- 数据转换;
- 依赖中间件;
- 各种业务逻辑;
你会发现一个service承担了太多职责,即要与中间件打交道,又要了解存储细节,还要承担各式各样的业务逻辑。当业务逻辑越来越复杂,未来service和manager会变得越来越难以维护。<阿里巴巴Java开发手册>中使用的架 构,很难解决以上耦合的问题。
六边形架构
传统分层的问题核心就在于耦合,而面对复杂的业务系统,我们要做的事情就是解耦。
六边形架构将整体的软件系统一分为二,六边形之外是系统的依赖,六边形之内是系统内部需要实现的业务系统, 六边形外部是我们与外部系统用户的交互,左边是我们的下游,右边是上游依赖。内外部通过适配器来进行交互和解耦。
六边形架构落地时与传统的分层模型很类似,但是更加明确了不同分层的职责和边界。
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)https://developer.aliyun.com/article/1339987?groupCode=taobaotech