这个问题与语言无关,但我是 C# 人,所以我使用 POCO 一词来表示仅执行数据存储的对象,通常使用 getter 和 setter 字段。
我刚刚将我的域模型重新设计为超级骗子 POCO,并且对如何确保属性值在域中有意义存在一些担忧。
例如,服务的结束日期不应超过该服务所依据的合同的结束日期。但是,将检查放入 Service.EndDate 设置器似乎违反了 SOLID,更不用说随着需要完成的验证数量的增加,我的 POCO 类将变得混乱。
我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这个困境的一些最喜欢的方法是什么?