2010-07-11 16 views
8

मुझे इसे समझने में परेशानी है। असल में, यह लुकअप एपीआई का उपयोग कमजोर युग्मित इंटरमॉड प्रकृति को रखने के लिए किया जाता है। तो मूल रूप से एक सेवा प्रदाता और उपभोक्ता मॉड्यूल प्रत्येक लुकअप एपीआई का उपयोग कर एक दूसरे के साथ संवाद कर सकते हैं?नेटबीन की लुकअप क्या है?

लेकिन क्या मुझे समझ नहीं आता है:

जो कि कक्षा के लिए वस्तुओं से भरा एक बैग की तरह देखने है? क्या कोई आसान सादृश्य दे सकता है?

तो निर्भरताएं बनाई गई हैं, और आप सेवा उपभोक्ता में लुकअप लिस्टनर को सही तरीके से कार्यान्वित करते हैं? जाहिर है उपभोक्ता प्रदाता पर निर्भरता है।

फिर लुकअप लिस्टर सुनने का कार्यान्वयन क्या है? यह खुद का लुकअप है? तो यदि किसी अन्य मॉड्यूल की कक्षा का नक्शा है, तो इसे लुकअप लिस्टनर के कार्यान्वयन के लुकअप के अंदर एक ऑब्जेक्ट के रूप में संग्रहीत किया जाएगा?

तो लुकअप एक बैग की तरह है जो किसी अन्य मॉड्यूल के वर्गों और इसकी विधियों को स्टोर कर सकता है?

क्या यह चयन निर्धारित करने की सही प्रक्रिया है?

  1. टॉपकंपोनेंट (देखें) में आप लुकअप श्रोता और क्रिया श्रोता लागू करते हैं। associateLookup() वास्तव में क्या कर रही है:
  2. आप (अन्य मॉड्यूल से) एक नई वस्तु
  3. associateLookup(Lookups.singleton(fff)); फिर से, भ्रम इस लाइन के साथ बनाते हैं?
  4. result = Utilities.actionsGlobalContext().lookupResult(Browser1.class); यह लाइन क्या कर रही है? परिणाम क्या है? क्या इसमें ब्राउज़र 1 वर्ग (अन्य मॉड्यूल से) है?
  5. result.addLookupListener (this); परिणामस्वरूप श्रोता क्यों जोड़ेंगे? और हम TopComponent पर क्यों और क्यों सुन रहे हैं?

  6. हो गया?

और अंततः, मेरे भ्रम को आगे बढ़ाने के लिए, नोड एपीआई pla7y में कैसे आती है?

+2

आप यहां NetBeans प्लेटफ़ॉर्म के बारे में बहुत सारी जानकारी और वीडियो ट्यूटोरियल पा सकते हैं: http://netbeans.org/kb/trails/platform.html – Jesper

उत्तर

2

आप लुकअप को मूल उपकरण के रूप में सोच सकते हैं जो ढीला युग्मन उच्च संयोजन सिद्धांत का समर्थन करता है।

public interface Beverage { 
    ... 
} 

फिर एक और मॉड्यूल beers जो beverage-api पर निर्भर करता है: एक और मॉड्यूल जो भी beverage-api पर निर्भर करता है में

@ServiceProvider(service = Beverage.class) 
public class SomeBeer implements Beverage { 
    ... 
} 

आप एक जादू सूत्र लिख सकते हैं

मूल रूप से आप beverage-api मॉड्यूल में एक API है :

Collection list = Lookup.getDefault().lookupAll(Beverage.class); 

जो आपको विशिष्ट श्रेणी पर सटीक निर्भरता या उस मॉड्यूल पर निर्भरता के बिना सभी पेय प्रदाताओं की एक सूची प्राप्त करेगा। यह बहुत अच्छा है, आपका कोड विशिष्ट कार्यान्वयन पर निर्भर नहीं है, क्लास पथ पर इन मॉड्यूल के लिए पर्याप्त है और वे आपके एप्लिकेशन में "ऑटो-जादुई" लोड होंगे।

associateLookup(Lookups.singleton(fff)); फिर से, इस पंक्ति के साथ भ्रम: सहयोगी लुकअप() वास्तव में क्या कर रहा है?

हाँ, यह भ्रमित है। असल में आप मैन्युअल रूप से लुकअप सिस्टम में कुछ ऑब्जेक्ट जोड़ रहे हैं।

result = Utilities.actionsGlobalContext().lookupResult(Beverage.class);

Utilities.actionsGlobalContext() वर्तमान में (सक्रिय) TopCompoment चयनित से संबंधित है। यदि यह सक्रिय घटक में मौजूद है तो यह Beverage.class का एक उदाहरण वापस कर देगा। यदि आप दिए गए वर्ग के सभी उदाहरण चाहते हैं तो आपको lookupAll() का उपयोग करना चाहिए।

result.addLookupListener(this); क्यों आप परिणाम की श्रोता जोड़ना होगा?

परिवर्तनों के बारे में अधिसूचना प्राप्त करने के लिए।

void resultChanged(LookupEvent ev); 

और result.allInstances(); वापस आ जाएगी जो उदाहरणों चयन किया गया था: उपयोगकर्ता कुछ Beverages वस्तुओं का चयन करता है यह LookupListener विधि से चलाता है।

संबंधित मुद्दे