我们正在开发一个PHP5项目,代码量相当大,最近一周我在进行RESTful API的PoC。我们将Model Classes与Business Classes分开。
在尝试实现CRUD功能时,我发现直接针对Models实现CRUD将非常简单,而针对Business Logic实现则不然,因为它的功能是特定于当前存在的Views,并且其接口没有提供我需要实现API所需的通用数据访问模型。
思考这个问题,我想到了以下几个问题:
1. 如何以保持模型的灵活性和同时保持模型当前不关心的功能(例如在更改电子邮件地址时发送激活链接)的情况下与数据交互?
2. 在之前与Django一起工作时,由于大多数业务逻辑都是在模型中实现的,为什么还要将业务逻辑分开呢?你有任何现实生活中的例子吗?如果有的话,这解决了哪些问题?
此外,我也想到了一些可能的解决方案:
1. 将整个业务逻辑放入模型中。在调用save方法之前/之后检查哪些字段已更改。
2. 使用观察者模式来通知业务对象模型中的更改并直接与模型交互。
在你的看法中,这些方案的优缺点是什么?你会采取哪种方案?
在尝试实现CRUD功能时,我发现直接针对Models实现CRUD将非常简单,而针对Business Logic实现则不然,因为它的功能是特定于当前存在的Views,并且其接口没有提供我需要实现API所需的通用数据访问模型。
思考这个问题,我想到了以下几个问题:
1. 如何以保持模型的灵活性和同时保持模型当前不关心的功能(例如在更改电子邮件地址时发送激活链接)的情况下与数据交互?
2. 在之前与Django一起工作时,由于大多数业务逻辑都是在模型中实现的,为什么还要将业务逻辑分开呢?你有任何现实生活中的例子吗?如果有的话,这解决了哪些问题?
此外,我也想到了一些可能的解决方案:
1. 将整个业务逻辑放入模型中。在调用save方法之前/之后检查哪些字段已更改。
2. 使用观察者模式来通知业务对象模型中的更改并直接与模型交互。
在你的看法中,这些方案的优缺点是什么?你会采取哪种方案?