DDD中验证对象的最佳实践



假设我有一个名为Order的实体。我的域必须确保,当它收到要包含的订单时,与关联的客户端处于活动状态。

验证这一点的最佳实践是什么?

换句话说,验证与正在验证的实体相关的某个实体的最佳实践是什么?应该在哪里进行验证?

理想情况下:您的决策(计算、分支等(将在域模型中进行。信息的检索将在应用程序代码中,应用程序代码将把信息作为参数传递给域模型。

你的域实体保存着它的信息,它需要知道的所有其他信息都会传递给它

生活并非总是理想的版本:如果主动获取Client::isActive的成本很高,那么你可能不想总是获取信息。因此,您要么(a(设计一个协议,使域模型告诉应用程序代码它需要这些信息,然后应用程序代码获取信息并将其传递回;要么(b(将功能传递给域模型,为其自身查找信息(也就是传递"域服务",它知道如何按需获取信息(。

这两种方法在代码复杂性、定时和错误处理方面有不同的权衡。

最新更新