Интерфейсы в 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
}
}