是否有用于“空行为”的空接口实现的标准名称?

时间:2019-03-01 16:19:54

标签: design-patterns naming-conventions naming

考虑一个接口(以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”?

1 个答案:

答案 0 :(得分:0)

没有标准名称。但是我们可以使用clean code原理找到一个:

  • 每个概念选一个词。保持一致。
  • 好名字应该描述业务和解决方案领域。
  • 如果有设计模式,请使用它。

实际上,我们有一个名字,叫NullObject。看看Null Object Design Pattern

  

Null对象的目的是封装不存在的对象   通过提供可替代的替代方案,提供适当的违约   无所作为。简而言之,“什么都不会发生”的设计   什么都没有

     

在以下情况下使用空对象模式

     
      
  • 一个对象需要一个协作者。空对象模式不   介绍这种协作-它利用了   已经存在
  •   
  • 某些协作者实例不应该执行任何操作
  •   
  • 您要从客户端抽象出对null的处理
  •   

以下:

class NullLog : ILog {
...
}

表示您要登录到null,这意味着您要丢弃它。