这个问题与语言无关,但我是C#家伙所以我使用术语POCO来表示一个只能预先形成数据存储的对象,通常使用getter和setter字段.
我只是将我的领域模型重新设计成超级PCOO,并且对于如何确保属性值在域中有意义而留下了一些问题.
例如,服务的EndDate不应超过服务所在合同的EndDate.但是,将检查放入Service.EndDate设置器似乎违反了SOLID,更不用说随着需要完成的验证数量增加,我的POCO类将变得混乱.
我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这一难题的最佳方法是什么?
我认为你开始时有一个糟糕的假设,即你应该拥有除了存储数据之外什么都不做的对象,并且除了访问器之外没有任何方法.拥有对象的重点是封装数据和行为.如果你有一个东西,基本上是一个结构,你封装了什么行为?