您认为至少应该将哪些功能构建到可持久化的业务对象中?
例如:
- 验证
- 一种与同一类型的另一个对象进行比较的方法
- 撤消能力(回滚更改的能力)
您认为至少应该将哪些功能构建到可持久化的业务对象中?
例如:
由领域和业务决定的功能。
阅读领域驱动设计。
一个可持久化的业务对象应该包括以下内容:
通常,您将抽象功能以将它们检索到支持的存储库中:
您也可以将这种类型的功能包装到集合类中(例如 BusinessObjectTypeCollection),但是在使用领域驱动设计中的存储库模式来提供这些类型的访问器(例如 InvoicingRepository.GetAllCustomers、InvoicingRepository.GetAllInvoices)方面有很多进展。
您可以将业务规则放在新建、保存、更新、删除......但有时您可能有一个外部业务规则引擎,您可以将对象传递给该引擎。
这只是答案的一部分,但我想说您需要一种方法来获取与该对象有关系的所有对象。一开始你可能会尝试变得聪明,只为某些关系添加单向导航,但我发现这通常比它的价值更麻烦。
所有持久性框架还包括查找器、级联删除的方法……排序……
一旦开始建模,所有业务对象都应该知道如何管理自己。每当您发现另一个类过多地引用您的业务对象时,通常是时候将该行为推入业务对象本身。
在问题中提到的三件事中,我想说验证是唯一真正需要的。其他的取决于应用程序的整体架构。
此外,业务规则应该在业务对象中。
一个对象是否应该进行自己的序列化是一个有趣的问题。过去,通过让每个对象处理自己的序列化,我取得了巨大的成功,但我也看到了让序列化模块加载和保存业务对象的好处,就像 GUI 写入和读取对象一样。然后您的验证也将防止数据库或文件中的错误。
我想不出一般需要的其他任何东西。