考虑一个接口(以C#为例)
interface ILog
{
void log(string text);
}
具有以下实现:
class GUILog : ILog
{
public log(string text)
{
MessageBox.Show(text);
}
}
class ConsoleLog : ILog
{
public log(string text)
{
Console.WriteLine(text);
}
}
class FakeLog : ILog
{
public log(string text)
{
//Do nothing
}
}
是否有类似“ FakeLog”之类的通用命名约定。请注意,日志记录上下文只是一个示例。一般的想法是,您拥有一个不执行任何操作的实现...您应该如何命名呢?当然,您必须假设客户端不依赖于执行某种操作才能正确运行。 “模拟”可能很接近,但更多的是从测试的角度来看,在这种情况下,不会记录任何呼叫。也许是“ NOOP”?
答案 0 :(得分:0)
没有标准名称。但是我们可以使用clean code
原理找到一个:
实际上,我们有一个名字,叫NullObject
。看看Null Object Design Pattern:
Null对象的目的是封装不存在的对象 通过提供可替代的替代方案,提供适当的违约 无所作为。简而言之,“什么都不会发生”的设计 什么都没有
在以下情况下使用空对象模式
- 一个对象需要一个协作者。空对象模式不 介绍这种协作-它利用了 已经存在
- 某些协作者实例不应该执行任何操作
- 您要从客户端抽象出对null的处理
以下:
class NullLog : ILog {
...
}
表示您要登录到null
,这意味着您要丢弃它。