Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 对于实现接口的无用对象是否有公认的模式?_Design Patterns_Interface - Fatal编程技术网

Design patterns 对于实现接口的无用对象是否有公认的模式?

Design patterns 对于实现接口的无用对象是否有公认的模式?,design-patterns,interface,Design Patterns,Interface,例如,(尽管它不是一个接口,.NET中的Stream类有一个Stream.Null提供的实现,它只是丢弃数据。PowerShell已输出空值 在我开发的应用程序中,我经常发现使用默认实现NullFoo或类似的实现接口IFoo是很有用的,因为最好使用无用的实现,而不是根本不传递对象 我的问题是,在记录或解释架构时,我应该如何参考这种做法?是否有可识别的名称或GoF/Fowler设计模式?此模式通常被称为“NullObject”:是的。这是一种模式。显然它有一个名字“NullObject”,但这个问

例如,(尽管它不是一个接口,.NET中的Stream类有一个Stream.Null提供的实现,它只是丢弃数据。PowerShell已输出空值

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


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

此模式通常被称为“NullObject”:

是的。这是一种模式。

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

从一开始,我的整个项目实现就包括存根方法或数据接收器

我使用术语“存根”指的是尚未实现的外部接口(但已经给了您有意义的全额回报,允许您从第1天开始构建项目)

我使用的“伸卡器”指的是一个接口,它允许我将数据定向到该接口,但实际上它不会从那里转到其他任何地方,而且这不是发送者的错(因此在该范围内编写“不发送”条件会很麻烦)

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

  • 正如其他海报所指出的,这个物体似乎被称为a
  • 如果您是在.Net环境中编程,您可能希望遵循Microsoft惯例,即空的(如中所示)。见下文

更一般地说,空对象模式称为空对象模式