如何以通用形式实现NULL对象设计模式?

时间:2010-03-26 11:40:54

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

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

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

有没有办法,怎么样?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

相关问题