目前正在对从另一个团队接管的东西进行一些代码审查,并且对应用 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);
}
从这个对象的 pov 来看,能够存储它的状态是一个很好的想法。其他方法可能是在这里引入某种服务并这样做:
public StorageService {
private Storage;
// constructor here
....
public void store(MyObject myobj);
}
您能指出我可以阅读有关此问题的任何链接吗?我在这里找到了一个关于 SO 的线程,但它并没有完全回答我的问题。
在 DDD 中是如何解决的?DDD 中的模型根据定义是丰富的,并且可以被视为具有太多的职责。