值对象内部的业务逻辑

Business logic inside of value object

我认为值对象不应该有业务逻辑。

这可能会让其他程序员感到困惑。

例如,

<pre><code>public class PersonVO { private String name; private int age; public void somethingBusinessLogic() { // Do very complecated logic -> Using Reflection, Conversion } }

如果我使用此 VO,必须查看 vo 逻辑如何工作。

许多程序员将他们的业务逻辑放在 VO 中。

我想知道最佳做法是什么?

这取决于您在应用程序中使用的架构。如果您有分层架构:

  • 服务层应该有业务逻辑
  • 数据层负责CRUD操作,这一层应该很简单。这一层不应该有任何逻辑,除了基本的 CRUD 逻辑。模型 类 不应包含任何逻辑,因为 ORM 会阻止您在模型 类.
  • 中包含逻辑
  • UI 层应该只负责表示和处理 DTO 或 ViewModels

阅读更多关于 other architectures here in this beautiful answer