【发布时间】:2009-02-18 16:27:30
【问题描述】:
这些年来我一定是忽略了“告诉,不要问”OOP 原则,因为我几天前才第一次了解它。
但上下文是关于已从 ASP.NET 网页表单页面移出并移入数据/业务对象的验证代码的讨论,并且没有“Validate()”方法,只有一个本身的保存方法进行了验证并(据说)引发了异常。我问为什么要这样设计,我被引导到 OOP 的“告诉,不要问”原则,这是我从未听说过的,所以我们一起研究了谷歌,我立即受到了教育。 ;)
但是,有些东西闻起来不太对劲,难道不应该在数据从用户传递到处理和/或收集数据的业务层之前对其进行清理,而不是反过来?我很困惑这对好的设计有何影响。
似乎“告诉,不要问”的规则与您不应该向目标对象询问目标对象的状态的想法有关,并且该原则从未真正适用于正在被处理的数据传递到目标对象。
【问题讨论】:
标签: oop tell-dont-ask