我知道在实体中注入服务(通过构造函数或设置器)并让实体保留对它的引用通常被认为是一种不好的做法。
但是在调用方法时可以暂时将服务交给实体吗?
例如,假设我想对name
实体的字段进行版本化,并且VersionService
每次setName()
调用时都创建一个新版本,我可以这样做:
public class Entity
{
public void setName(String name, VersionService service)
{
this.name = name;
service.addVersion(this, name);
}
}
我在这段代码中喜欢的是,如果setName()
不提供 a 就无法调用该方法VersionService
,从而强制执行所需的行为。通过模拟VersionService
.
我在Jimmy Bogard关于双重调度模式的帖子中找到了这种方法的一个示例。
但是从关于 Stack 的一些讨论中,我认为普遍的共识是避免对域模型中的服务有任何依赖。
对这个问题有什么想法吗?