web服务程序设计探索(1)——俄罗斯套娃模型

本文探讨了service/logic/dao/db分层架构的特点及其实现方式,分析了该架构的优点,例如简单清晰的代码组织形式,同时也指出了其缺点,比如层次之间的强耦合性和副作用问题,并讨论了这些因素如何增加测试的复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、模型图

这里写图片描述

“service/logic/dao/db”是一种非常常见的分层架构,从代码层次上看,同一层次代码可以放在同一个package,或以…Logic, …Dao等类名来区分;在程序实现处理过程中,都严格遵循上层调用下层函数的方式进行,不会出现跨层、反向调用,一直调用到最底层。

二、优点

在使用过程中,感觉到这种模型的好处就是比较简单,对于每一个请求,都是一层一层代码往下写,如果下层代码可复用,就直接调用,如果不能复用,则新增接口。

三、缺点

层次之间耦合性强

层与层之间通过函数调用,层层包裹,下一层的变动,对上一层都会带来影响;上层还需要对下层抛出的异常进行处理;这使得每一层都不是真正独立的,很难保证各层的稳定性;

副作用

这种俄罗斯套娃模型,最里层是带副作用的数据库操作或网络读写操作,这中副作用从里到外污染了整个程序。因为逻辑处理过程中的一些数据来源于数据库文件、网络数据、随机值等,而这些数据来源很可能被别人修改,使得处理过程不能被稳定测试。

另外,如果在逻辑处理代码中,存在没有返回值的写操作,这些副作用的操作,相当于给逻辑处理代码暗藏下一颗“雷”,这颗雷暗藏的效果是不会体现在逻辑处理函数返回值中的,而一旦爆炸,则会炸毁整个处理逻辑。

测试复杂

要想测试这种带副作用的逻辑,一种方式是为测试用例提供一个真实稳定的数据来源(如稳定的数据库,远程网络服务);另一种方法是使用mock的方法来指定副作用的结果;这些都是副作用带来的额外工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值