में मैं जीडब्ल्यूटी में Has****Handlers
इंटरफेस के अर्थ को समझने में असमर्थ हूं। यदि कक्षा HasClickHandlers
(addClickHandler
) और ClickHandler
(onClick
) इंटरफेस लागू करती है तो क्या अंतर होगा।हैडलर का मतलब है gwt
धन्यवाद
में मैं जीडब्ल्यूटी में Has****Handlers
इंटरफेस के अर्थ को समझने में असमर्थ हूं। यदि कक्षा HasClickHandlers
(addClickHandler
) और ClickHandler
(onClick
) इंटरफेस लागू करती है तो क्या अंतर होगा।हैडलर का मतलब है gwt
धन्यवाद
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
को सूचित करेंगे।
आपका वर्ग ABC
ClickHandler
लागू कर सकते हैं या एक आंतरिक (संभव अनाम) वर्ग कि ClickHandler
से निकला हो सकती है। एक सामान्य उपयोग इस प्रकार दिखता है:
public class ABC {
...
getSaveButton().addClickHandler(
new ClickHandler() {
public void onClick(ClickEvent event) {
saveToDatabase();
}
}
}
...
HasClickHandlers ऑब्जेक्ट क्लिक ईवेंट उत्पन्न के लिए है। ClickHandler उन वस्तुओं के लिए है जो घटनाओं से निपटते हैं।
उदाहरण के लिए, एक बटन एक क्लिक ईवेंट उत्पन्न करेगा। जब आप एक क्लिक ईवेंट को संभालना चाहते हैं, तो आप एक क्लिकहैंडलर बनाते हैं जिसमें ऐसा कोड होता है। आप बटन ऑब्जेक्ट के साथ इस क्लिकहैंडलर को पंजीकृत करते हैं ताकि जब कोई क्लिक होता है, तो बटन जानता है कि इसके बारे में कौन बताना है। हैस्क्लिक हैंडलर इंटरफ़ेस बटन द्वारा लागू किया गया है (फोकसविजेट पेरेंट क्लास के माध्यम से) जो क्लिकहैंडलर को पंजीकृत करने के लिए केवल इंटरफ़ेस है। यह इंटरफ़ेस केवल ClickHandlers के पंजीकरण को मानकीकृत करता है।
ठीक है, उदा। अगर एबीसी कक्षा हैस्क्लिकैंडलर और क्लिकहैंडलर लागू करती है और फिर ऑनक्लिक और ऐडक्लिक हैंडलर (जो हैंडलर पंजीकरण) लौटाती है, तो इसका मतलब है कि 1) यह क्लिकक्लिक विधि के माध्यम से क्लिक ईवेंट पर कार्य करेगा और 2) किसी भी अन्य वर्ग (एस) को पता चलेगा (जो क्लिकहैंडलर को लागू कर रहा है और घटना रजिस्टर करने के लिए एबीसी कक्षा के इस्तेमाल किए गए ऐडक्लिक हैंडलर) कि क्लिक अभी हुआ है? सही? – Deam
@ user330281 - संपादन देखें –