构建业务对象的功能是什么?

时间:2010-02-22 22:05:59

标签: oop persistence business-objects

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

例如:

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

4 个答案:

答案 0 :(得分:2)

域名和域名所规定的功能。业务。

阅读Domain Driven Design

答案 1 :(得分:1)

可持久的业务对象应包含以下内容:

  • 数据
  • 保存
  • 删除
  • 序列化
  • 反序列化

通常,您将抽象功能将其检索到支持以下内容的存储库中:

  • GetByID
  • GETALL
  • GetByXYZCriteria

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

您可以将业务规则放在“新建”,“保存”,“更新”,“删除...”中,但有时您可以使用外部业务规则引擎将对象传递给。

答案 2 :(得分:0)

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

所有持久性框架还包括查找程序,进行级联删除的方法......排序....

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

答案 3 :(得分:0)

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

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

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

我想不出一般所需要的任何其他内容。