UI和业务逻辑分离

UI即可以是桌面UI、也可以是Web UI。开发桌面程序的人大都知道,ui的代码不能参杂在逻辑层代码中,如ui控件类不能出现在逻辑层中,这是从代码级的解耦。这个错误很少有人会犯。做到第一点还不够,曾经的项目中就有个例子,处理的数据有文件记录(目录、文件)、上网记录(目录、网址)、聊天信息(号码、好友、群、聊天记录)等,界面显示这些信息都是左边是树、右边是列表。但是我们逻辑层的代码,这些数据结构被定义为一个很深的类层次,跟树形结构很接近。但是后来其他的项目要用这个逻辑层的代码,但是展示方式又不是这样,很难使用,同时也很难理解这个逻辑层代码,那么多的父子类关系,记不住。

UI编程的思考方式是自上而下,这容易导致业务逻辑代码被UI影响,不通用、耦合紧。

Unix 编程艺术里介绍了自上而下实现ui,自下而上实现通用基础逻辑代码,通过中间的一个业务层来胶合。基础逻辑代码越基础,才会越通用。根据项目的复杂度,中间业务胶水层的厚度也不一样,像一个数据库操作界面工具,业务就很简单。

这其实和模块内聚的思想也一样,高内聚、低耦合。

面向对象大家都知道数据和相关的操作封装一起,但是很多人都容易犯把所有操作都和数据关联在一起,导致一个庞大的类,如stl里的string类,巨无霸,真正应该和数据放一起的操作只是那些最基本的,而不是所有的。


关于这点,在开发一个web系统时,一位同事认为如果底层数据结构和展示一致的化,容易缓存结构。但是我认为缓存这个功能其实不应该和最底层的代码想关联。

web ui和桌面ui都应该用该思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值