2011-06-21 14 views
8

में इंटरफ़ेस मैं एक सामाजिक वेब ऐप प्रोजेक्ट शुरू करने वाला हूं।ग्रोवी

जबकि मैं कक्षाओं को डिजाइन कर रहा था, मैंने आवश्यकतानुसार "टिप्पणी करने योग्य" या "पसंद करने योग्य" जैसे इंटरफेस को परिभाषित करने का निर्णय लिया।

फिर भी मैं इसे समझ नहीं पाया कि ग्रोवी में इसे कैसे कार्यान्वित किया जाए, कि मैं सीखने के चरण में हूं।

नीचे उदाहरण ग्रूवी प्रलेखन से है,

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 

कहो यह मेरा इंटरफेस में से एक है, और मैं एक वर्ग इस इंटरफ़ेस को लागू करने के लिए बी कहा जाता है का उपयोग करना चाहते ..

मैं सिर्फ करेगा संबंधित नियंत्रक में एक्स के रूप में बी कहें?

डोमेन परत में इसे कैसे करें? यदि कक्षा जेड है, तो "टिप्पणी करने योग्य" कहें, क्या मैं सिर्फ एक डोमेन क्लास को टिप्पणी कहूंगा और कहूंगा कि ज़ेड की कोई टिप्पणी है? और नियंत्रक परत में इंटरफ़ेस का उपयोग करें?

सही तरीके से ऐसा करने के लिए ग्रोवी तरीका क्या है? मैं थोड़ा उलझन में हूं और थोड़ा सा स्पष्टीकरण वास्तव में अच्छा होगा।

अग्रिम

उत्तर

18

उदाहरण आपको बताएंगे धन्यवाद सही जब अपने स्वयं के इंटरफेस को लागू करने का उपयोग करने के नहीं है। यह केवल एक इंटरफ़ेस को आंशिक रूप से कार्यान्वित करने का एक सुविधाजनक तरीका है। इस उदाहरण में केवल f विधि लागू की गई है, इसलिए जैसे ही आप देखे गए अन्य विफल हो जाते हैं। यह आपके लिए एक बड़ा इंटरफ़ेस होने पर परीक्षण के लिए उपयोगी है लेकिन परीक्षण के तहत कक्षा में केवल कुछ विधियों को कॉल करें, इसलिए आपको पूरे इंटरफ़ेस को लागू करने की आवश्यकता नहीं है।

तुम सिर्फ जावा में तरह ग्रूवी में इंटरफेस को लागू:

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 
    } 
} 
+0

आप यह सुनिश्चित करें कि के बारे में मैं इस तरह किसी एक उदाहरण देखने के फ्लॉप भी नहीं यकीन है कि लागू कीवर्ड – add9

+0

तो डिजाइन सवाल अगर मैं परिभाषित कर सकते हैं के बारे में ग्रूवी मौजूद हैं जावा में बस एक इंटरफ़ेस, इसे नियंत्रक में कार्यान्वित करना और डोमेन में हैनी का उपयोग करना एक सही बात होगी? – add9

+3

ग्रोवी (या ग्रेल्स) में इंटरफेस का उपयोग करने में बहुत कम लाभ है क्योंकि आप जो भी तरीका चाहते हैं उसे कॉल कर सकते हैं - ग्रोवी "बतख टाइपिंग" का समर्थन करता है। कुछ प्लगइन्स उनका उपयोग करते हैं लेकिन वास्तव में "मार्कर" इंटरफ़ेस के रूप में अधिक तरीकों से नहीं होते हैं, और इन्हें केवल प्रकार वर्गीकृत करने के लिए उपयोग किया जाता है ताकि आप "exampleIn MyInterface" की जांच कर सकें और तदनुसार कार्य कर सकें। लेकिन इसके अलावा इंटरफेस का उपयोग करने के लिए वास्तव में कोई कारण नहीं है। –