2

您是否尝试将每个组件与主序列的距离保持在较低水平?只包含业务对象定义的程序集呢?是否有可能让他们远离疼痛区?此类程序集中的类型通常由其他程序集使用,并且相当具体。如何处理这种情况?

4

1 回答 1

5

我相信{保持“与主序列的距离”低}的目标是基于得墨忒耳定律。遵循此规则有助于使您的代码更易于理解和单元测试。通过使用仅仅是数据容器的业务对象,您会暴露比可能需要的更多的状态并破坏封装规则。

然而,正如 Fowler在这篇文章中指出的那样,“虽然方法链是一种气味,但中间人对象因转发方法而臃肿的相反问题也是一种气味。(我一直觉得我会更习惯于得墨忒耳,如果它被称为得墨忒耳的建议的话。)”

我认为,如果您只想传递对象包含的“内容”,例如它们如何用作数据传输对象,那么这些基本业务对象的价值可能会很有用。但是,将真正的业务对象与空的数据传输对象区分开来可能很重要。我会假设真正的业务对象也应该包含行为以及它们封装的数据。

于 2009-08-03T05:17:44.410 回答