2011-01-17 11 views
5

में मैं जीडब्ल्यूटी में Has****Handlers इंटरफेस के अर्थ को समझने में असमर्थ हूं। यदि कक्षा HasClickHandlers (addClickHandler) और ClickHandler (onClick) इंटरफेस लागू करती है तो क्या अंतर होगा।हैडलर का मतलब है gwt

धन्यवाद

उत्तर

7

HasClickHandlers - कुछ क्लिक किया जा सकता है, उदा। एक बटन

ClickHandler - कुछ कोड है जो एक क्लिक

एक HasClickHandlers वस्तु पर संभालती एक विजेट, एक बटन की तरह है कि जब उपयोगकर्ता इस पर क्लिक कर सकते हैं प्रतिक्रिया है। लेकिन एक बटन स्वयं नहीं जानता है कि जब उपयोगकर्ता उस पर क्लिक करता है तो क्या होना चाहिए। एक डेवलपर ClickHandler ऑब्जेक्ट तैयार कर सकता है, जो कुछ कोड है जो लागू होता है जब उपयोगकर्ता उस बटन पर क्लिक करता है। उपयोगकर्ता के क्लिक पर प्रतिक्रिया करने के लिए एक बटन को ClickHandler दिया जा सकता है, यानी बटन पर क्लिक हैंडलर हो सकता है - HasClickHandlers। प्रस्तोता से देखने decoupling

HasClickHandlers getSaveButton(); 
बजाय

बस

Button getSaveButton(); 

गूगल अधिवक्ताओं: क्यों GWT कहना है अनुप्रयोगों की तरह विधि हस्ताक्षरों के साथ दृश्य इंटरफेस परिभाषित करना चाहिए


एक पूछ सकते हैं। प्रस्तुतकर्ता आमतौर पर बटन की सभी कार्यक्षमताओं के लिए बहुत कम परवाह करता है - यह आमतौर पर केवल इस बात की परवाह करता है कि बटन ऐसा कुछ है जो एक क्लिक हैंडलर ले सकता है और इसका उपयोग कर सकता है। HasClickHandler जैसे इंटरफेस में बहुत कम तरीके हैं और नकली करना बहुत आसान है। वास्तविक बटन का उपयोग करने के लिए कभी-कभी पूरे यूआई ढांचे के कुछ या हिस्से को शुरू करने और परीक्षण के लिए बटन बनाने के लिए पूर्ववर्ती संदर्भ कक्षाओं को तुरंत चालू करने की आवश्यकता होगी।

बजाय Button इंटरफ़ेस वापसी HasClickHandler होने से, प्रस्तोता के लिए इकाई परीक्षण कोड बस HasClickHandler तरह इंटरफेस मजाक द्वारा यूआई ढांचे की जटिलता से पूरी तरह से दसगुणा कर सकते हैं। इसका मतलब है कि सरल परीक्षण मचान और बहुत तेज़ यूनिट परीक्षण (क्योंकि आपके पास UI फ्रेमवर्क के साथ प्रारंभ करने/बातचीत करने का ओवरहेड नहीं है)।

http://googletesting.blogspot.com/2009/08/tott-testing-gwt-without-gwttest.html


संपादित

ओपी पूछते हैं:

ठीक है, उदा अगर एबीसी कक्षा हैस्क्लिकैंडलर और क्लिकहैंडलर लागू करती है और फिर ऑनक्लिक और ऐडक्लिक हैंडलर (जो हैंडलर पंजीकरण) लौटाती है, तो इसका मतलब है कि 1) यह क्लिकक्लिक विधि के माध्यम से क्लिक ईवेंट पर कार्य करेगा और 2) किसी भी अन्य वर्ग (एस) को पता चलेगा (जो क्लिकहैंडलर को लागू कर रहा है और घटना रजिस्टर करने के लिए एबीसी कक्षा के इस्तेमाल किए गए ऐडक्लिक हैंडलर) कि क्लिक अभी हुआ है? सही?

ABC की तरह आपका कक्षाएं HasClickHandlers लागू नहीं होंगे। बटनों जैसे केवल जीडब्ल्यूटी विजेट HasClickHandlers लागू करते हैं। Google बस HasClickHandlers इंटरफेस को बटन जैसे कुछ विजेट्स के परिवर्तनीय संदर्भ घोषित करने के वैकल्पिक तरीके के रूप में प्रदान कर रहा है। ये विजेट एक बटन क्लिक के बारे में पंजीकृत ClickHandler को सूचित करेंगे।

आपका वर्ग ABCClickHandler लागू कर सकते हैं या एक आंतरिक (संभव अनाम) वर्ग कि ClickHandler से निकला हो सकती है। एक सामान्य उपयोग इस प्रकार दिखता है:

public class ABC { 
    ...  
    getSaveButton().addClickHandler(
     new ClickHandler() { 
      public void onClick(ClickEvent event) { 
       saveToDatabase(); 
      } 
     } 
    } 
    ... 
+0

ठीक है, उदा। अगर एबीसी कक्षा हैस्क्लिकैंडलर और क्लिकहैंडलर लागू करती है और फिर ऑनक्लिक और ऐडक्लिक हैंडलर (जो हैंडलर पंजीकरण) लौटाती है, तो इसका मतलब है कि 1) यह क्लिकक्लिक विधि के माध्यम से क्लिक ईवेंट पर कार्य करेगा और 2) किसी भी अन्य वर्ग (एस) को पता चलेगा (जो क्लिकहैंडलर को लागू कर रहा है और घटना रजिस्टर करने के लिए एबीसी कक्षा के इस्तेमाल किए गए ऐडक्लिक हैंडलर) कि क्लिक अभी हुआ है? सही? – Deam

+0

@ user330281 - संपादन देखें –

2

HasClickHandlers ऑब्जेक्ट क्लिक ईवेंट उत्पन्न के लिए है। ClickHandler उन वस्तुओं के लिए है जो घटनाओं से निपटते हैं।

उदाहरण के लिए, एक बटन एक क्लिक ईवेंट उत्पन्न करेगा। जब आप एक क्लिक ईवेंट को संभालना चाहते हैं, तो आप एक क्लिकहैंडलर बनाते हैं जिसमें ऐसा कोड होता है। आप बटन ऑब्जेक्ट के साथ इस क्लिकहैंडलर को पंजीकृत करते हैं ताकि जब कोई क्लिक होता है, तो बटन जानता है कि इसके बारे में कौन बताना है। हैस्क्लिक हैंडलर इंटरफ़ेस बटन द्वारा लागू किया गया है (फोकसविजेट पेरेंट क्लास के माध्यम से) जो क्लिकहैंडलर को पंजीकृत करने के लिए केवल इंटरफ़ेस है। यह इंटरफ़ेस केवल ClickHandlers के पंजीकरण को मानकीकृत करता है।