4

我的理解是,OO 设计的基本原则是应该专注于将类建模为代码和数据的联合。然而,在日常开发中,我倾向于将我所有的业务逻辑分成它们自己的类。“数据”最终位于严格控制的 POCO/DTO 中,基本上没有真正的代码或逻辑。然后我实例化一个业务逻辑类,并在我希望操作发生时将 POCO 传递给每个方法。

但这感觉像是两种不同的方法。事实上,后一种方法似乎与 OO 的目的不一致!

我想我一直将这两件事分开,因为业务逻辑可能在多个 POCO 上运行。另外,强制验证 POCO 中的数据使单元测试更容易,因为准备 POCO 进行测试似乎更简单(无需担心内部类状态、封装等)。现在我回顾这些原因,它们似乎很弱。

我正在寻找两种方法的比较/对比。具体来说,为什么现在看起来制作“愚蠢”的 POCO 是一种方式?为什么不把数据和业务逻辑放在一个类中呢?我们是否正在放弃面向对象设计的最初目标?

谢谢!

4

1 回答 1

3

事实上,将业务逻辑与相关数据分离是违反 OOP 原则的,这就是 Martin Fowler 所说的贫血领域模型。就个人而言,我总是会选择一个合适的域模型,将数据和行为放在一起。

具体来说,为什么现在看起来制作“愚蠢”的 POCO 是一种方式?

我不知道你为什么这么认为,但这肯定不是真的。那里有许多“愚蠢”的模型,但也有许多精心设计的领域模型。

于 2012-09-09T07:57:06.007 回答