Существует ли стандартное имя для пустой реализации интерфейса, используемой для «нулевого поведения»? - PullRequest
0 голосов
/ 01 марта 2019

Рассмотрим (в 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».Обратите внимание, что контекст регистрации является лишь примером.Общая идея заключается в том, что у вас есть реализация, которая ничего не делает ... как бы вы назвали это?Конечно, вы должны предположить, что клиент не полагается на реализацию, выполняющую что-то для правильной работы.«Mock», возможно, близок, но это скорее от стороны тестирования, и в этом случае звонки не регистрируются.Может быть, «NOOP»?

1 Ответ

0 голосов
/ 01 марта 2019

Стандартного имени нет.Но мы можем найти один, используя clean code принципы:

  • Выберите одно слово для концепции.Будьте последовательны.
  • Хорошее имя должно описывать бизнес и области решений.
  • Если есть шаблон проектирования, используйте его.

На самом деле, у нас есть одно имя иэто NullObject.Взгляните на Шаблон проектирования пустых объектов :

Цель нулевого объекта - инкапсулировать отсутствие объекта, предоставляя заменяемую альтернативу, которая предлагает подходящее по умолчанию поведение бездействия.,Вкратце, дизайн, в котором «из ничего ничего не выйдет»

Используйте шаблон Null Object, когда

  • объект требует коллаборатора.Шаблон Null Object не представляет это сотрудничество - он использует сотрудничество, которое уже существует
  • некоторые экземпляры соавтора не должны ничего делать
  • вы хотите абстрагировать обработку нуля от клиента

Ниже:

class NullLog : ILog {
...
}

означает, что вы хотите войти в систему null, что означает, что вы хотите выбросить его.

...