带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(2)

简介: 带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(2)

带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(1)https://developer.aliyun.com/article/1339989?groupCode=taobaotech


开发规约之术

设计规约

 

image.png传统分层架构

 

 

 

image.png

 

 

传统分层架构通过Controller,Service,Manager,  DAO层来组织业务逻辑,通过贫血模型来传递上下文数据, 所有的业务逻辑不需要考虑怎么组织,统统往Manager和Service中写。如果遇到更加复杂的逻辑,那就加一些设 计模式来处理(本质还是封装Service和Manager)。这种方式属于面向过程开发的事务脚本模式,该方式在一些 比较简单的CRUD场景下比较适用,但当逻辑越来越复杂的时候Manager和Service会越来越膨胀和难以维护。

 

举个例子,我们使用ServiceItemService(服务项相关服务)来处理服务项相关的逻辑,我们需要维护以下层次:

 

  1. 存储逻辑;
  2. 数据转换;
  3. 依赖中间件;
  4. 各种业务逻辑;

 

你会发现一个service承担了太多职责,即要与中间件打交道,又要了解存储细节,还要承担各式各样的业务逻辑。当业务逻辑越来越复杂,未来service和manager会变得越来越难以维护。<阿里巴巴Java开发手册>中使用的架  构,很难解决以上耦合的问题。

 

六边形架构

传统分层的问题核心就在于耦合,而面对复杂的业务系统,我们要做的事情就是解耦。

 

 

 

image.png

 

六边形架构将整体的软件系统一分为二,六边形之外是系统的依赖,六边形之内是系统内部需要实现的业务系统, 六边形外部是我们与外部系统用户的交互,左边是我们的下游,右边是上游依赖。内外部通过适配器来进行交互和解耦。

 

六边形架构落地时与传统的分层模型很类似,但是更加明确了不同分层的职责和边界。


带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)https://developer.aliyun.com/article/1339987?groupCode=taobaotech

相关文章
|
应用服务中间件 程序员 数据库
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
带你读《2022技术人的百宝黑皮书》——开发规约的意义与细则(3)
284 0
|
网络架构 Docker 容器
Docker容器动态添加端口
Docker容器动态添加端口
474 0
|
Java
Mac下安装JDK11(国内镜像)
Mac下安装JDK11(国内镜像)
8116 0
|
机器学习/深度学习 搜索推荐 算法
Learning Disentangled Representations for Recommendation | NIPS 2019 论文解读
近年来随着深度学习的发展,推荐系统大量使用用户行为数据来构建用户/商品表征,并以此来构建召回、排序、重排等推荐系统中的标准模块。普通算法得到的用户商品表征本身,并不具备可解释性,而往往只能提供用户-商品之间的attention分作为商品粒度的用户兴趣。我们在这篇文章中,想仅通过用户行为,学习到本身就具备一定可解释性的解离化的用户商品表征,并试图利用这样的商品表征完成单语义可控的推荐任务。
24168 0
Learning Disentangled Representations for Recommendation | NIPS 2019 论文解读
|
数据采集 缓存 搜索推荐
服务端渲染(SSR)与静态站点生成(SSG)结合使用
服务端渲染(SSR)与静态站点生成(SSG)结合使用
|
传感器 存储 供应链
物联网技术在物流领域的应用实例有哪些?
物联网技术在物流领域的应用实例有哪些?
2656 59
|
数据可视化 数据库 开发者
使用Dash构建交互式Web应用程序
【10月更文挑战第16天】本文介绍了使用Python的Dash框架构建交互式Web应用程序的方法。Dash结合了Flask、React和Plotly等技术,让开发者能够快速创建功能丰富的数据可视化应用。文章从安装Dash开始,逐步介绍了创建简单应用程序、添加交互元素、部署应用程序以及集成更多功能的步骤,并提供了代码示例。通过本文,读者可以掌握使用Dash构建交互式Web应用程序的基本技巧和高级功能。
|
JSON JavaScript UED
画出你的想法,体验Excalidraw的魅力,完全免费的绘图工具!
画出你的想法,体验Excalidraw的魅力,完全免费的绘图工具!
1109 1
钉钉回传中文信息乱码怎么处理?
钉钉回传中文信息乱码怎么处理?
981 0