Les Interfaces en Groovy
Je suis sur le point de commencer un web social projet d'application.
Alors que j'étais à la conception de classes , j'ai décidé de définir des interfaces comme "commentable" ou "sympathique" à utiliser en cas de besoin.
Pourtant je ne pouvais pas comprendre comment le mettre en œuvre dans Groovy, que je suis en phase d'apprentissage.
L'Exemple ci-dessous est à partir de la Groovy de la documentation,
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
Dire que c'est un de mes interfaces , et je veux utiliser une Classe appelée B pour implémenter cette interface ..
je viens de dire B de X , dans le contrôleur?
Comment faire dans le domaine de la couche? Si une classe Z est, disons, "commentable" , j'ai juste fais un domaine classe appelée Commentaire et dire que Z hasMany Commentaire? et utilisez l'interface de la couche contrôleur?
Quel est le Groovy façon de le faire correctement? Je suis peu confus et un peu de clarification serait vraiment sympa.
Merci d'avance
OriginalL'auteur add9 | 2011-06-21
Vous devez vous connecter pour publier un commentaire.
L'exemple que vous montrez n'est pas le droit à utiliser au moment de la mise en œuvre de vos propres interfaces. C'est un moyen pratique pour que partiellement implémenter une interface. Dans cet exemple, seul le
f
méthode est mise en œuvre, de sorte que les autres échouent comme vous l'avez vu. Ceci est utile pour tester si vous avez une grande interface, mais seulement d'appeler quelques méthodes de la classe sous test, de sorte que vous n'avez pas besoin de mettre en œuvre l'ensemble de l'interface.Vous d'implémenter des interfaces en Groovy, tout comme en Java:
donc en ce qui concerne la conception de la question, si je peux définir une interface tout comme en Java , mise en oeuvre dans le Contrôleur et l'utilisation de hasMany dans le domaine serait une bonne chose à faire?
Il y a peu d'avantages à l'utilisation d'interfaces en Groovy (ou Grain) puisque vous pouvez appeler n'importe quelle méthode que vous voulez - Groovy prend en charge "duck typing". Certains plugins utilisent mais vraiment plus comme "marqueur" des interfaces avec pas de méthodes, et ils sont utilisés pour classer les types de sorte que vous pouvez vérifier pour "instanceof MyInterface" et d'agir en conséquence. Mais à part ça, il n'y a vraiment aucune raison d'utiliser des interfaces.
Concernant votre "met en œuvre" question - presque tout le code Java est valable Groovy code, donc bien Groovy prend en charge la
implements
mot-clé. Vous voudrez peut-être obtenir une copie de Venkat Subramaniam "Programmation Groovy" - c'est très bon et est le plus récemment publié Groovy livre. "Groovy en Action" est le classique mais qui est un peu datée, bien que la 2e édition est disponible en accès anticipé édition à manning.com/koenig2si vous faites un mixte de Java et Groovy projet, il pourrait être utile d'indiquer les informations sur l'interface de Java parties du projet, même si Groovy, les appelants n'en avez pas besoin.
OriginalL'auteur Burt Beckwith