【问题标题】:Is there a recognized pattern for useless objects that implement an interface?实现接口的无用对象是否有公认的模式?
【发布时间】:2010-10-31 00:29:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: design-patterns interface


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      从一开始,我的整个项目实施就包含在 Stub 方法或 Data sinkers 上。

      我使用术语“存根”来指代尚未实现的外部接口(但已经为您提供了有意义的回报,允许您从第一天开始构建项目)。

      我使用“Sinker”来指代一个允许我将数据定向到它的接口,但实际上它从那里无处可去,这不是发送者的错(因此编写“不发送”的代码会很麻烦" 范围内的条件)。

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

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:

          是的。这是Null Object 模式。

          【讨论】:

            【解决方案5】:

            这种模式通常被称为“NullObject”:http://en.wikipedia.org/wiki/Null_Object_pattern

            【讨论】:

              猜你喜欢
              • 2015-03-17
              • 1970-01-01
              • 2010-10-20
              • 2017-12-03
              • 1970-01-01
              • 1970-01-01
              • 2012-03-06
              • 1970-01-01
              相关资源
              最近更新 更多