2010-07-22 9 views
15

मैं GWT के साथ अपना पहला कदम कर रहा हूं। मैं पढ़ने के बाद एक सवाल है:एमवीपी: क्या दृश्य को प्रस्तुतकर्ता के इंटरफ़ेस को लागू करना चाहिए या इसके विपरीत?

पहला उदाहरण Presenter में View के लिए इंटरफेस को परिभाषित करता।

public class ContactsPresenter implements Presenter { 
    ... 
    public interface Display extends HasValue<List<String>> { 
    HasClickHandlers getAddButton(); 
    HasClickHandlers getDeleteButton(); 
    HasClickHandlers getList(); 
    void setData(List<String> data); 
    int getClickedRow(ClickEvent event); 
    List<Integer> getSelectedRows(); 
    Widget asWidget(); 
    } 
} 

और दूसरा एक में, ViewPresenter के लिए इंटरफेस को परिभाषित करता।

public interface ContactsView<T> { 

    public interface Presenter<T> { 
    void onAddButtonClicked(); 
    void onDeleteButtonClicked(); 
    void onItemClicked(T clickedItem); 
    void onItemSelected(T selectedItem); 
    } 

    void setPresenter(Presenter<T> presenter); 
    void setColumnDefinitions(List<ColumnDefinition<T>> columnDefinitions); 
    void setRowData(List<T> rowData); 
    Widget asWidget(); 
} 

इस अंतर का क्या विचार है?

मुझे कौन सा चयन करना चाहिए?

+2

से GWTP या ERRAI तरह framworks पर गौर करना चाहिए कि कैसे एक प्रस्तोता दृश्य को संशोधित करने में सक्षम होना चाहिए। इसलिए, प्रस्तुतकर्ता को केवल इसके विचारों का संदर्भ बनाए रखने की आवश्यकता है। मुझे समझ में नहीं आता कि दृश्य और प्रस्तुतकर्ता एक दूसरे को लागू करने के लिए क्या हासिल किया जाएगा। –

+0

@ अभिजीत काश्निया: यह दो अलग-अलग उदाहरण हैं। लिंक देखें, वे वही करते हैं लेकिन वे अलग-अलग लागू होते हैं। – Macarse

+0

गतिविधि और स्थानों और एमवीपी के साथ इतिहास प्रबंधन में भी हमारे पास एक दृश्य इंटरफ़ेस को लागू करने वाली गतिविधि है! वह एमवीपी कैसा है? –

उत्तर

2

मुझे लगता है कि आपको 'उपकरण' के बजाय अपने प्रश्न में 'परिभाषित' शब्द का उपयोग करना चाहिए था और यदि मामला तो इससे कोई फर्क नहीं पड़ता कि कौन सा वर्ग इंटरफ़ेस को परिभाषित करता है।

आप इंटरफेस को अपनी फाइलों में परिभाषित करके कुछ अलग कर सकते हैं। उस दिन के अंत में जो प्रेजेंटर इंटरफेस को कार्यान्वित करता है और दृश्य इंटरफ़ेस को लागू करने वाला दृश्य प्रस्तुत करता है।

0

दूसरे ट्यूटोरियल में कोड को प्रस्तुतकर्ता इंटरफ़ेस (दृश्य में परिभाषित) का उपयोग करने के लिए बदल दिया गया ताकि यूआईबिंडर्स और जावा जेनरिक का उपयोग करने के लिए समायोजित किया जा सके। मुझे लगता है कि प्रेजेंटर इंटरफेस को व्यू इंटरफ़ेस में ले जाया गया था क्योंकि वे दोनों एक ही जेनेरिक टी

2

@ दीपक इन मान्य चिंताओं को साझा करते हैं। शब्द संक्राम कार्यान्वयन परिभाषा नहीं है।

मुझे समझाएं। पहले उदाहरण में प्रस्तुतकर्ताओं को अनुबंध है कि दूसरे शब्दों में क्या दृश्य लागू करना चाहिए, जो क्लासिकल एमवीपी दृष्टिकोण को देखकर लागू किया जाना चाहिए।

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

@ इंटरसेट को अलग करने वाला साकेत बंसल सही दृष्टिकोण नहीं है। आवेदन बढ़ने के साथ ही कोड को बनाए रखना मुश्किल होगा।

मेरी राय में आप या तो दृष्टिकोण ले सकते हैं, मुझे याद है कि Google ने कुछ कह रहे हैं जहां पहले व्यक्ति ने एडवर्ड्स के लिए और दूसरी तरफ लहर के लिए काम किया था।

किसी भी तुम भी jboss

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

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