Как вы называете свои «эталонные» реализации интерфейса? - PullRequest
2 голосов
/ 28 ноября 2009

У меня довольно простой вопрос, и в заголовке он четко сформулирован: как вы называете «базовые» или «базовые» реализации интерфейса? Я видел некоторые соглашения об именах:

  • FooBarImpl
  • DefaultFooBar
  • BasicFooBar

Что вы используете? Каковы плюсы и минусы? И куда вы помещаете эти «эталонные» реализации? В настоящее время я создаю пакет .impl, куда идут реализации. Более сложные реализации, которые могут содержать несколько классов, входят в пакет .impl.complex, где «complex» - это краткое имя, описывающее реализацию.

Спасибо, Malax

Ответы [ 5 ]

2 голосов
/ 28 ноября 2009

Интересно, отражает ли ваш вопрос обычаи определенного языка? Я пишу на C #, и у меня обычно нет реализации по умолчанию. У меня есть интерфейс, скажем IDistance, и у каждой реализации есть имя, которое описывает его реальное назначение / как оно определено, скажем, EuclidianDistance, ManhattanDistance ... На мой взгляд, «default» не является свойством самой реализации, но его контекста: приложение может иметь сервис / метод с именем «GetDefaultDistance», который будет настроен для возврата одной из реализаций расстояния.

1 голос
/ 29 ноября 2009

В Java ( всякий раз, когда подходит ) я обычно использую вложенный класс с именем RefImpl. Таким образом, для данного интерфейса InterfaceXYZ эталонная реализация всегда InterfaceXYZ.RefImpl, и нет необходимости возиться с созданием эффективно избыточных имен.

public interface InterfaceXYZ {

   // interface methods ...

   public static class RefImpl implements InterfaceXYZ {
        // interface method impls.
   }
}

А затем используйте единый шаблон использования:

// some where else
public void foo () {

    InterfaceXYZ  anXYZ = new InterfaceXYZ.RefImpl();

    ...
}
0 голосов
/ 29 ноября 2009

Точное соглашение не имеет значения - будь то IService + Service или Service + ServiceImpl. Дело в том, чтобы был единообразным на протяжении всего проекта .

0 голосов
/ 28 ноября 2009

Если интерфейс является RazmaFrazzer, я бы назвал реализацию DefaultRazmaFrazzer.

Если у вас уже есть несколько реализаций, и вы отметили одну из них как «стандартную», посмотрите на все реализации, и посмотрите на различия между ними и прилагайте прилагательное, которое описывает различающее функция реализации по умолчанию, например SimpleRazmaFrazzer, или, если это конвертер, у вас может быть PassThroughDefaultRazmaFrazzer - так что вы ищете то, что делает реализацию отличительной.

0 голосов
/ 28 ноября 2009

I задал предыдущий вопрос о "нулевой" реализации, и она была идентифицирована как шаблон нулевого объекта - реализация интерфейса, которая не делает ничего значимого. Как и Матиас, я не слишком уверен, что можно было бы считать реализацией «по умолчанию», у которой не было какого-то имени, специфичного для ее реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...