【问题标题】:How can i implement the NULL Object Design Pattern in a generic form?如何以通用形式实现 NULL 对象设计模式?
【发布时间】:2010-03-26 11:40:54
【问题描述】:

有没有办法以通用形式实现空对象设计模式,这样我就不需要为每个业务对象都实现它。

对我来说,每个商务舱都需要两个高级课程。一个用于单个记录,另一个用于列表。所以我认为应该有一种方法可以在高层次上实现 NULL 对象设计模式,而不必为每个类都实现它。

请问有什么办法吗?

【问题讨论】:

    标签: c# .net design-patterns null-object-pattern


    【解决方案1】:

    在我的理解中,NULL 类不必为您拥有的每个类实现,而是为您拥有的每个接口实现。在这种情况下,您当然可以编写一些方法,使用反射为任何给定接口生成一个空的标准实现。但是,对于某些接口,NULL 对象的期望行为可能具有特殊情况,在这种情况下,通用解决方案将失败。

    例如,您可以有一个实现IComparable 的接口。在某些情况下,您可能希望 NULL 对象等于所有其他对象,而在其他情况下,您希望它小于所有其他对象。

    编辑:IComparable 只是一个例子。关键是,我认为拥有一个通用的 NULL 类实现并不聪明。您使用 NULL 类,因此您的程序可以工作而无需处理 NULL 返回值的特殊情况。如果您有一个默认实现,那么您肯定需要再次检查特殊情况,并且会错过模式的全部要点。

    【讨论】:

    • 谢谢。我必须了解 IComparable 接口。你能帮我小费吗?
    • 编辑回答您的评论。
    • 如果从继承树的这个通用 NULL 对象接口继承的每个类都自己处理它们的 null 情况,而不是让不同的类来处理 null。
    【解决方案2】:

    正如here an SO 之前已经讨论过的,NULL 对象的实现是依赖于域的,所以我认为您的问题没有一个通用的答案。也许您会为您的业务对象找到一个或多或少的通用解决方案。如果你提供一些你想到的例子,你可能会得到一些更好的答案。

    【讨论】:

      猜你喜欢
      • 2010-12-03
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多