我正在做一些关于DDD,CQRS和ES的研究。看看这个聚合根的源代码,我只是好奇这是否违反了单一责任原则?或者,对于聚合根/DDD来说,这是预期的吗?如有任何反馈,将不胜感激。非常感谢。
发布于 2014-06-01 17:18:43
另一种看待SRP的方法是“这段代码必须有一个改变的原因”。如果有一个以上的原因,那么我们可以说这是一个SRP违规。
因此,看看代码,我可以看到一些原因,它可能会改变:
需要存储更多的帐户信息,而不仅仅是帐户名。客户服务需要信息,以联系帐户持有人,地址,电子邮件,电话号码。
备忘录对象反序列化需要变得更加复杂。目前,只有一个管道|将数量和帐户分开:
var split = ledger.Value.Split(new[] { '|' });有很多事件,AccountOpenedEvent,AccountClosedEvent等等,如果将来需要更多的事件,例如AccountSuspendedEvent,这个类可能会改变。
我可能会继续下去,但是的,在我看来,这门课违反了SRP。现在需要改变吗?不,可能不是,我希望有一个不错的测试套件(这里就是这样),在实现更改之前作为第一步进行重构。
https://stackoverflow.com/questions/23979275
复制相似问题