Интерфейсы в Groovy

Я собираюсь начать проект социального веб-приложения.

пока я разрабатывал классы, я решил определить интерфейсы, такие как "commentable" или "likeable", чтобы использовать их при необходимости.

но я не мог понять, как реализовать это в Groovy, что я нахожусь в стадии обучения.

приведенный ниже пример из документации Groovy,

 interface X
{ void f(); void g(int n); void h(String s, int n); }

x = [ f: {println "f called"} ] as X
x.f()
//x.g()    // NPE here

скажем, это один из моих интерфейсов, и я хочу использовать класс B для реализации этого взаимодействие..

должен ли я просто сказать B как X, в связанном контроллере?

Как это сделать на уровне домена? Если класс Z, скажем, "комментируемый", должен ли я просто сделать класс домена под названием Comment и сказать Z Hasmany Comment? и использовать интерфейс на уровне контроллера?

что такое Groovy способ сделать это правильно? Я немного смущен, и небольшое разъяснение было бы очень хорошо.

спасибо заранее

1 ответов


пример, который вы показываете, не является правильным для использования при реализации ваших собственных интерфейсов. Это удобный способ только частично реализовать интерфейс. В этом примере только f метод реализован, поэтому другие терпят неудачу, как вы видели. Это полезно для тестирования, когда у вас большой интерфейс, но вы вызываете только несколько методов в тестируемом классе, поэтому вам не нужно реализовывать весь интерфейс.

вы реализуете интерфейсы в Groovy так же, как и в Java:

interface Math {
   int add(int a, int b)

   int multiply(int a, int b)
}

class SimpleMathImpl implements Math {
   int add(int a, int b) {
      a + b
   }

   int multiply(int a, int b) {
      a * b
   }
}