对于实现接口的无用对象,是否存在可识别的模式?

时间:2009-06-03 14:45:40

标签: design-patterns interface

例如,(虽然它不是接口).NET中的Stream类有一个Stream.Null提供的实现,它只是丢弃数据。 PowerShell有Out-Null。

在我开发的应用程序中,我经常发现使用默认实现NullFoo或者类似的实现接口IFoo很有用,因为它最好有一个无用的实现,而不是根本不传递一个对象。

我的问题是如何在记录或解释架构时参考这种做法?是否有公认的名称或GoF / Fowler设计模式?

5 个答案:

答案 0 :(得分:11)

此模式通常称为“空对象”:{{3p>

答案 1 :(得分:5)

是的。这是Null Object模式。

答案 2 :(得分:3)

显然它有一个名字,“NullObject”,但问题可能有不同的方面:

从一开始我的整个项目实现就包括Stub方法或数据沉降器。

我使用术语“Stub”指的是尚未实现的外部接口(但已经给你一个有意义的返回,允许你从第1天开始构建项目)。

我使用“Sinker”指的是一个接口,它允许我将数据引导到它,但实际上它从那里到处都没有,并且它不是发送者的错(因此代码“不发送”会很麻烦“该范围内的条件。”

必须实现完整构建,然后,我们开始编码。随着时间的推移,几乎所有的存根都会起作用(有些会处理或提供数据),几乎所有的存储器都能正常工作。在代码审查中,我们发现一些沉降片可以不再存在,其他的可以分组等等。

答案 3 :(得分:1)

答案 4 :(得分:0)

更一般地说,Null对象模式称为Special Case pattern