2010-03-26 45 views
3

有没有一种方法来实现通用形式的空对象设计模式,以便我不需要为每个buisness对象实现它。如何以通用形式实现NULL对象设计模式?

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

有没有办法,怎么样?

回答

2

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

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

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

+0

谢谢。我将不得不了解IComparable接口。你能帮我一个小费吗? – Tebo 2010-03-26 12:00:34

+0

编辑回答您的评论。 – 2010-03-26 12:05:12

+0

如果从继承树中继承这个通用的NULL对象接口的每个类自己处理它们的null情况,而不是用不同的类来处理null。 – Tebo 2010-03-26 12:18:31

0

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