例如,(虽然它不是接口).NET中的Stream类有一个Stream.Null提供的实现,它只是丢弃数据。 PowerShell有Out-Null。
在我开发的应用程序中,我经常发现使用默认实现NullFoo或者类似的实现接口IFoo很有用,因为它最好有一个无用的实现,而不是根本不传递一个对象。
我的问题是如何在记录或解释架构时参考这种做法?是否有公认的名称或GoF / Fowler设计模式?
答案 0 :(得分:11)
此模式通常称为“空对象”:{{3p>
答案 1 :(得分:5)
是的。这是Null Object模式。
答案 2 :(得分:3)
显然它有一个名字,“NullObject”,但问题可能有不同的方面:
从一开始我的整个项目实现就包括Stub方法或数据沉降器。
我使用术语“Stub”指的是尚未实现的外部接口(但已经给你一个有意义的返回,允许你从第1天开始构建项目)。
我使用“Sinker”指的是一个接口,它允许我将数据引导到它,但实际上它从那里到处都没有,并且它不是发送者的错(因此代码“不发送”会很麻烦“该范围内的条件。”
必须实现完整构建,然后,我们开始编码。随着时间的推移,几乎所有的存根都会起作用(有些会处理或提供数据),几乎所有的存储器都能正常工作。在代码审查中,我们发现一些沉降片可以不再存在,其他的可以分组等等。
答案 3 :(得分:1)
答案 4 :(得分:0)
更一般地说,Null对象模式称为Special Case pattern。