当前位置:  开发笔记 > 编程语言 > 正文

如何将数据验证与我的简单域对象(PO​​CO)分开?

如何解决《如何将数据验证与我的简单域对象(PO​​CO)分开?》经验,为你挑选了1个好方法。

这个问题与语言无关,但我是C#家伙所以我使用术语POCO来表示一个只能预先形成数据存储的对象,通常使用getter和setter字段.

我只是将我的领域模型重新设计成超级PCOO,并且对于如何确保属性值在域中有意义而留下了一些问题.

例如,服务的EndDate不应超过服务所在合同的EndDate.但是,将检查放入Service.EndDate设置器似乎违反了SOLID,更不用说随着需要完成的验证数量增加,我的POCO类将变得混乱.

我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这一难题的最佳方法是什么?



1> Charlie Mart..:

我认为你开始时有一个糟糕的假设,即你应该拥有除了存储数据之外什么都不做的对象,并且除了访问器之外没有任何方法.拥有对象的重点是封装数据和行为.如果你有一个东西,基本上是一个结构,你封装了什么行为?


您描述的设计被称为"贫血领域模型".域驱动设计可以说是面向对象设计的一个特定应用,它规定了完全相反的情况,即对象应该封装它正在建模的数据和行为.
推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有