2016-05-21 9 views
5

निम्नलिखित छद्म कोड है कि एमवीपी पैटर्न को लागू करता है पर विचार करें:एमवीपी डिज़ाइन पैटर्न सबसे अच्छा अभ्यास

interface Presenter { 
    void onSendClicked(); 
} 

interface View { 
    String getInput(); 
    void showProgress(); 
    void hideProgress(); 
} 

class PresenterImpl implements Presenter { 
    // ...ignore other implementations 
    void onSendClicked() { 
     String input = view.getInput(); 
     view.showProgress(); 
     repository.store(input); 
     view.hideProgress(); 
    } 
} 

class ViewImpl implements View { 
    // ...ignore other implementations 
    void onButtonClicked() { 
     presenter.onSendClicked(); 
    } 

    String getInput() { 
     return textBox.getInput(); 
    } 

    void showProgress() { 
     progressBar.show(); 
    } 

    void hideProgress() { 
     progressBar.hide(); 
    } 
} 

और यहाँ एमवीपी पैटर्न के एक विकल्प के कार्यान्वयन है:

interface Presenter { 
    void saveInput(String input); 
} 

interface View { 
    void showProgress(); 
    void hideProgress(); 
} 

class PresenterImpl implements Presenter { 
    // ...ignore other implementations 
    void saveInput(String input) { 
     view.showProgress(); 
     repository.store(input); 
     view.hideProgress(); 
    } 
} 

class ViewImpl implements View { 
    // ...ignore other implementations 
    void onButtonClicked() { 
     String input = textBox.getInput(); 
     presenter.saveInput(intput); 
    } 

    void showProgress() { 
     progressBar.show(); 
    } 

    void hideProgress() { 
     progressBar.hide(); 
    } 
} 

एक कौन सा एमवीपी की अधिक सही कार्यान्वयन है पैटर्न? क्यूं कर?

+0

कोड समीक्षा इस प्रश्न के लिए एक बेहतर जगह हो सकती है, आपको कुछ अच्छे उत्तर मिलेंगे: http://codereview.stackexchange.com/ –

+0

@Jezzabeanz उसे इसके लिए वास्तविक कोड की आवश्यकता है, हालांकि छद्म कोड नहीं। – Riker

+0

राय के बिना मैं बिना किसी राय के लिए कैसे पूछ सकता हूं? – CarlLee

उत्तर

2

मेरे संक्षिप्त उत्तर:

मैं पहली बार एक कहेंगे।

मेरे उत्तर है:

असल एमवीपी दो वेरिएंट हैं: निष्क्रिय देखें और प्रस्तुतकर्ता

आपका छद्म कक्षाएं निगरानी निष्क्रिय देखें के एक कार्यान्वयन बनाता है।

अंतर देखने के लिए: Please check the first answer here। यह उनका वर्णन करता है और उनके बीच का अंतर पूरी तरह से, इसलिए मुझे लगता है कि सामग्री को कॉपी करने के लिए इसकी आवश्यकता नहीं है।

मेरा उत्तर के कारण:

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

इस पर आधारित, दृश्य को यह नहीं पता होना चाहिए कि बटन दबाए जाने पर इसे आपके इनपुट टेक्स्टबॉक्स से मूल्य प्रदान करना चाहिए। यह केवल प्रस्तुतकर्ता को सूचित करना चाहिए कि बटन दबाया गया है और प्रस्तुतकर्ता के लिए गेटर्स का पर्दाफाश करने के लिए किसी भी उपयोगकर्ता इनपुट को इकट्ठा करना है।

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