AggregateRoot和单一责任原则的示例

时间:2014-06-01 11:19:54

标签: domain-driven-design cqrs solid-principles

我正在对DDD,CQRS和ES进行一些研究。看一下聚合根的source code,我只是好奇这是否违反了单一责任原则?或者这是聚合根/ DDD的预期?任何反馈都将非常感激。非常感谢。

1 个答案:

答案 0 :(得分:1)

另一种思考SRP的方法是#34;此代码必须有一个原因才能改变#34;。如果有多个原因,我们可以说它是违反SRP的。

所以看一下代码我可以看到它可能会改变的一些原因:

需要存储其他帐户信息,而不仅仅是帐户名称。客户服务需要信息来联系帐户持有人,地址,电子邮件,电话号码。

纪念品对象反序列化需要变得更加复杂。目前,它只有一个管道|分隔金额和帐户:

 var split = ledger.Value.Split(new[] { '|' });

有很多活动,AccountOpenedEvent AccountClosedEvent等。如果将来需要更多活动,例如此课程可能会发生变化,例如AccountSuspendedEvent

我可能会继续,但是我认为这个课程违反了SRP。现在需要改变吗?不,可能不是,我希望有一个不错的测试套件(this does here),稍后重构,作为实施更改之前的第一步。