最近我在检查从另一个团队接手的代码,对于如何应用SRP及其与贫血或富领域模型(由Martin Fowler定义)的关系有疑问。
富领域模型的概念是拥有智能对象,这些对象不仅可以设置/获取它们的属性,还可以执行一些更复杂的业务逻辑。我想知道它如何符合SRP?
假设我的模型类具有一些属性,可以公开这些属性并在其属性上提供一些简单的计算。下一个要求是将此对象数据存储在某个不受我控制的存储对象中,像这样:
class MyObject {
// get set
// parse sth
}
将方法存储在存储器中
storage.store(key, object);
如果MyObject有如下存储方法,是否违反了SRP原则?
public void store(Storage storage) {
storage.store('keyOne', fieldOne);
storage.store('keyTwo', fieldTwo);
}
从这个对象的角度来看,能够存储它的状态是一件好事情。 另一种方式可能是在这里引入某种服务,并像这样进行:
public StorageService {
private Storage;
// constructor here
....
public void store(MyObject myobj);
}
你能给我指出一些关于这个问题的阅读链接吗?我在这里找到了一个 SO 的帖子,但它并没有完全回答我的问题。
在 DDD 中该如何解决这个问题? 在 DDD 中,模型从定义上来说是丰富的,并且可以被看作具有过多的职责。