我们正在开发一个代码量很大的 PHP5 项目,上周我研究了一个 RESTful API 的 PoC。我们将模型类与业务类分开。
我发现,尝试实现 CRUD 功能时,直接针对模型实现 CRUD 将非常简单,而针对业务逻辑实现则不是,因为它的功能特定于当前现有的视图,并且它的接口不提供实现 API 所需的通用数据访问模型。
考虑到这一点,我想到了以下问题:
与数据交互、保持模型的灵活性并保持模型目前不关心的功能(例如在更改电子邮件地址时发送带有激活链接的邮件)的最佳方式是什么?
之前用 django 工作了很多,大部分业务逻辑都是在模型中实现的,为什么还要保持业务逻辑分开呢?你有现实生活中的例子吗?如果有的话,这能解决什么问题?
我也想到了一些可能的解决方案:
- 将整个业务逻辑放入模型中。在调用 save 方法之后/之前检查哪些字段发生了变化。
- 使用观察者模式通知业务对象模型的变化并直接与模型交互。
在你看来有什么好处和坏处,你会怎么做?