Интерфейсы в Groovy - PullRequest
       18

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

8 голосов
/ 21 июня 2011

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

Пока я разрабатывал классы, я решил определить интерфейсы, такие как «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 есть, скажем, «commentable», я должен просто сделать класс домена с именем Comment и сказать, что Z имеет много комментариев? и использовать интерфейс на уровне контроллера?

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

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

1 Ответ

19 голосов
/ 21 июня 2011

Пример, который вы показываете, не подходит для использования при реализации ваших собственных интерфейсов. Это удобный способ реализовать интерфейс только частично. В этом примере реализован только метод 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
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...