我正在对DDD,CQRS和ES进行一些研究。看一下聚合根的source code,我只是好奇这是否违反了单一责任原则?或者这是聚合根/ DDD的预期?任何反馈都将非常感激。非常感谢。
答案 0 :(得分:1)
另一种思考SRP的方法是#34;此代码必须有一个原因才能改变#34;。如果有多个原因,我们可以说它是违反SRP的。
所以看一下代码我可以看到它可能会改变的一些原因:
需要存储其他帐户信息,而不仅仅是帐户名称。客户服务需要信息来联系帐户持有人,地址,电子邮件,电话号码。
纪念品对象反序列化需要变得更加复杂。目前,它只有一个管道|
分隔金额和帐户:
var split = ledger.Value.Split(new[] { '|' });
有很多活动,AccountOpenedEvent
AccountClosedEvent
等。如果将来需要更多活动,例如此课程可能会发生变化,例如AccountSuspendedEvent
。
我可能会继续,但是我认为这个课程违反了SRP。现在需要改变吗?不,可能不是,我希望有一个不错的测试套件(this does here),稍后重构,作为实施更改之前的第一步。