关于COLA架构的讨论

news/2024/11/7 1:35:04/

理解

分层

概念网上可以搜到很多,大体分为:

adapter

client

app

infra

domain

这五层。

图例这里有,就不贴了。

adapter和app相当于spring里的controller+service,domain是领域模型层,infra相当于domain的实现层(比如dao或rpc访问)。唯独client,有点疑问,目前我在实践中是把client作为app的对外接口层,隔离adapter和app之用。但也看到其他的理解,比如认为client是对外部接口调用的封装(我个人倒认为infra层做这个事情更合适,因为infra是业务防腐层)。

对象:XO

vo(value object):adapter层组装的对象,adapter将app返回的dto处理成可供界面展示的vo。它的重要特点就是展示,所以,一般服务端返回给浏览器或APP展示的数据都是vo,而从浏览器或APP调用服务端rest接口传递的数据则是dto,因为后者往往是内部数据,着重体现了传递(transfer)二字。

dto:app层要处理的对象,在前端 -> adapter -> app层间传递使用,所以叫data transfer object。app层可以将entity组装成dto(这种组装可能是内存里做的,但更一般的是数据库的关联查询语句)。

entity:特定领域的对象模型,放domain层。

do(data object):infra层对象,由infra层将rpc、查数据库获得的do转成entity。这里有个问题,如果在mybatis里做一个关联查询,查询出的其实是一个dto(比如领域模型A里包含了领域模型B),但这个dto是不能放app层的(那样infra无法访问),逻辑上也不建议放infra层,就只能放domain了。

实践当中,有两个极端,一是让vo在各层间传递,实际充当了四类对象,这样的vo很大,填充的字段会越来很多,很难做到内聚和解耦;一是每层都做自己的XO,这样会有很多看起来很相似的数据类,数据类间的converter工作量也很大。

我个人的建议:至少要有entity(关联查询时是dto)和vo这两层对象,确保界面与业务领域的适当解耦,同时数据converter的工作量也可控。当然,如果就是单表的CRUD,仅有一层entity对象也是可以的(实际业务中应该不多见,毕竟界面展示通常要考虑数字转枚举、国际化展示等,新做一层vo更合理)。


http://www.ppmy.cn/news/882720.html

相关文章

38、Spring事务的实现方式和原理以及隔离级别

Spring事务的实现方式和原理以及隔离级别 实现方式 在使用Spring框架时,可以有两种使用事务的方式,一种是编程式的,一种是申明式的,Transactional注解就是申明式的。 首先,事务这个概念是数据库层面的,S…

解决:win10搜狗输入法突然无效

在网上找了一大堆方法,重装卸载,设置输入法都没找到解决方法。 目前有个临时解决方案,就是每次失效的时候去,双击执行:C:\Windows\System32\ctfmon.exe 可以重新生效

处理 Win 10 开机后输入法不加载问题

最近笔者的台式机又出问题了, 开机启动项少了好几个. 最直观的就是启动之后, 输入法没了 经过一番网络搜索, 应该是暂时解决了问题, 这里记录下解决方法 一步到位法 直接 win r --> ctfmon.exe 即可 自行添加启动项法 定位问题 既然是没有开机启动, 那我们就来看看开机启…

Ubuntu20.04 中文输入法失效问题解决

Ubuntu导致不能输入中文的原因很多,安装fcitx框架或者Ibus框架都是常见的解决方法,我遇到的问题是ubuntu系统语言在中文的情况下不用安装fcitx框架,自带的中文输入法就能正常运行,问题是系统语言为英文时中文输入法无法正常使用&a…

ubuntu 16.04下搜狗输入法不能输入中文解决(linux下常见软件崩溃问题解决方案)

之前一段时间正常使用的搜狗输入法突然无法输出中文(具体现象是,可以呼出搜狗输入法界面,但是候选词列表无显示),解决之后记录下来,希望能为同样遇到这个问题的人提供参考 我的系统是 ubuntu 16.04 LTS&…

Ubuntu修复ibus输入法死机的问题

卸载原来的ibus输入法框架 sudo apt-get autoremove ibus*安装fictx输入法框架 sudo apt-get install fcitxUbuntu打开“语言支持“ 键盘输入法系统选择fcitx,应用到整个系统 重启系统 安装搜狗输入法 下载地址:https://shurufa.sogou.com/linux 安…

Win11系统输入法无法调出问题解决方法

针对Win11系统输入法消失问题 方法一方法二方法三 针对win11系统出现的输入法失效,无法调出的问题,本人在方法一、二皆不可行的情况下,通过方法三实现。 转载自 http://www.xitongzhijia.net/xtjc/20211103/231479.html 方法一 win11中文打…

自动修复无法修复你的电脑 解决方案

早上起来一开机,就看到电脑在自动修复,顿时感觉要出事,果不其然就一直这样,安全模式也进不来,后多方查找资料,不重装系统,不进pe完美将其解决。 首先点击高级选项,疑难解答&#xf…