关于聚合对象属性的可见性,我处于停顿状态。
以聚合根实体和cqrs类型的域(仅用于写入)为例。聚合根应该根据可以发送到域的命令反映和更改它的状态(例如:AR User.changeEmail或User.changePassword或User(电子邮件,密码),最后一个用于创建)。在最后一个例子中,我非常清楚我可以将所有属性设为私有,并仅在给定某些命令时填充/更改属性。但是重新创建以前存储在数据库中的AR用户呢?现在我需要将User的属性公开或者需要向对象添加setter。考虑到最后一个陈述,我倾向于继续公开所有的财产。
对于域对象属性可见性,您有什么建议?
P.S。 :进一步研究:
由于我现在正在使用PHP,我最好的解决方案是通过使用私有属性保持对域实体的适当封装,并使用这些类的反射并在重建对象时更改可见性。
如果您愿意分享,任何其他解决方案/抽象可以帮助解决这个问题/问题而不使用反射类的开销。谢谢!