4

您认为至少应该将哪些功能构建到可持久化的业务对象中?

例如:

  • 验证
  • 一种与同一类型的另一个对象进行比较的方法
  • 撤消能力(回滚更改的能力)
4

4 回答 4

2

由领域和业务决定的功能。

阅读领域驱动设计

于 2010-02-22T22:13:24.973 回答
1

一个可持久化的业务对象应该包括以下内容:

  • 数据
  • 新的
  • 节省
  • 删除
  • 序列化
  • 反序列化

通常,您将抽象功能以将它们检索到支持的存储库中:

  • 获取ID
  • 得到所有
  • GetByXYZCriteria

您也可以将这种类型的功能包装到集合类中(例如 BusinessObjectTypeCollection),但是在使用领域驱动设计中的存储库模式来提供这些类型的访问器(例如 InvoicingRepository.GetAllCustomers、InvoicingRepository.GetAllInvoices)方面有很多进展。

您可以将业务规则放在新建、保存、更新、删除......但有时您可能有一个外部业务规则引擎,您可以将对象传递给该引擎。

于 2010-02-22T22:12:16.830 回答
0

这只是答案的一部分,但我想说您需要一种方法来获取与该对象有关系的所有对象。一开始你可能会尝试变得聪明,只为某些关系添加单向导航,但我发现这通常比它的价值更麻烦。

所有持久性框架还包括查找器、级联删除的方法……排序……

一旦开始建模,所有业务对象都应该知道如何管理自己。每当您发现另一个类过多地引用您的业务对象时,通常是时候将该行为推入业务对象本身。

于 2010-02-22T22:13:27.967 回答
0

在问题中提到的三件事中,我想说验证是唯一真正需要的。其他的取决于应用程序的整体架构。

此外,业务规则应该在业务对象中。

一个对象是否应该进行自己的序列化是一个有趣的问题。过去,通过让每个对象处理自己的序列化,我取得了巨大的成功,但我也看到了让序列化模块加载和保存业务对象的好处,就像 GUI 写入和读取对象一样。然后您的验证也将防止数据库或文件中的错误。

我想不出一般需要的其他任何东西。

于 2010-02-22T22:22:21.253 回答