language-agnostic - 哪些层应该使用领域模型?

标签 language-agnostic design-patterns

假设我的业务层中有一个这样的方法:

// This is in the business layer
public Result DeleteSomeDomainObject( ???? )
{
   //Enforce business logic here.

   //Delete records in the database
   DAL. DeleteSomeDomainObject( ??? )
}


// This is in the data access layer
public Result DeleteSomeDomainObject( ???? )
{
   // Delete records from the database.       
}

这些方法应该采用域模型的实例还是仅采用主键?

最佳答案

我经常为此苦苦挣扎。我通常说你的业务/服务层应该将领域对象作为参数。

如果我们谈论的是 Web,您的 Web 层将具有 ID。它可能会实例化或从服务层检索对象的实例。因此将其传递到服务层是有意义的。

但是,有时您最终会重复对象的检索。有时,由于 Web 层中未捕获一些附加数据,您的服务无论如何都会加载对象。我什至有过这样的情况:数据访问层必须加载依赖项的对象。缓存可以解决其中一些问题,重新构建数据/模型可以解决其他问题。当然。但有时,考虑到性能或其他问题,传递 ID 更有意义。

总而言之,更喜欢将域对象传递到业务层。但要意识到,出于其他原因,您可能最好传递 ID,但不幸的是,您的规则需要有异常(exception)。

关于language-agnostic - 哪些层应该使用领域模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/596236/

相关文章:

oop - 继承与聚合

algorithm - 再现具有原始形状的图像。 (图形优化问题)

java - 正确设计 Java 类层次结构以实现代码共享和封装

java - 对象相识

ruby-on-rails - ruby 如何允许同名的方法和类?

language-agnostic - 如何实现一个简单的马尔可夫模型来将作者分配给匿名文本?

algorithm - 这个 "Lexographic order generation algorithm"是如何工作的?

javascript - 在线游戏中实时同步多用户数据的设计模式建议

ruby-on-rails - 最小测试嵌套资源的 Controller

sql - 哪种语言有好的 SQL 解析库?