कहाँ देखें चाहिए और प्रस्तुतकर्ता पैदा हो

वोट
5

मैं पूरी तरह अब एमवीपी पैटर्न को समझते हैं, लेकिन मैं अभी भी देखने के लिए जहां विचारों और प्रस्तुतकर्ताओं instantiated रहे संघर्ष। मैं कुछ उदाहरण हैं, जहां प्रस्तोता दृश्य में newed है देखा है, लेकिन यह सही है। देखें और प्रस्तुतकर्ता के बीच संवाद स्थापित करने के बारे में जेरेमी मिलर के एक ब्लॉग पोस्ट को पढ़ने के बाद वह प्रस्तुतकर्ता पर एक समारोह को देखने के लिए प्रस्तोता संलग्न करने के लिए किया था।

कहाँ विचारों और प्रस्तुतकर्ताओं बनाया जाना चाहिए: मेरा प्रश्न तो यह है? इसके अलावा WinForms और webforms में जहां।

09/12/2008 को 23:04
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
3

webforms में, पेज अनुरोध द्वारा instantiated हो जाता है। चूंकि पृष्ठ दृश्य है और आप निष्पादन का आदेश नियंत्रित नहीं कर सकते, यह दृश्य प्रस्तोता के साथ खुद को पंजीकृत करने के लिए किया है

09/12/2008 को 23:15
का स्रोत उपयोगकर्ता

वोट
2

Winforms में, मैं दृश्य का दृष्टांत के रूप में आवश्यक (जैसे: में mainविधि, या किसी अन्य प्रस्तोता पर एक विधि में है, लेकिन जहाँ भी वास्तव में समझ में आता है)। दृश्य तो पैदा करता है और एक प्रस्तुतकर्ता का एक नया उदाहरण के साथ खुद को पंजीकृत करता है।

यह कई बार देखा गया आसान एक ही प्रस्तोता तर्क का उपयोग कर रहा है, और एमवीपी उपयोग करने के लिए मेरी विशेष वास्तु निर्णय से मेरे विचार की ढाल उपयोगकर्ताओं।

09/12/2008 को 23:28
का स्रोत उपयोगकर्ता

वोट
1

सबसे पहले अच्छा प्रश्न है। दूसरे, इससे कोई फर्क नहीं हो सकता है, ज्यादा। मेरे निजी पसंद लगभग हमेशा दृश्य में प्रस्तुतकर्ता और देखें ऊपर तार की है।

इस परिदृश्य की तुलना करें:

public class SomePresenter
{
    public ShowContactView(IContactView view)
    {
        IContact model = new Contact();
        new ContactPresenter(model, view);
        view.Show();
    }
} 

public class AnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        IContact model = new Contact();
        new ContactPresenter(model, view);
        view.Show();
    }
} 

public class YetAnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        IContact model = new Contact();
        new ContactPresenter(model, view);
        view.Show();
    }
} 

public partial class ContactView : Form, IContactView
{    
    public ContactView()
    {
        InitializeComponent();
    }
}

इसके लिए:

public class SomePresenter
{
    public ShowContactView(IContactView view)
    {
        view.Show();
    }
} 

public class AnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        view.Show();
    }
} 

public class YetAnotherPresenter
{
    public ShowContactView(IContactView view)
    {
        view.Show();
    }
} 

public partial class ContactView : Form, IContactView
{    
    public ContactView()
    {
        InitializeComponent();

        new ContactPresenter(new Contact(), this);
    }
}

जैसा कि आप देख सकते हैं उत्तरार्द्ध बहुत कम कोड दोहराव है। बेशक कि मूर्खतापूर्ण दोहराव है या आप कह सकते हैं आप एक साझा समारोह के लिए आम कार्यक्षमता स्थानांतरित कर सकते हैं, लेकिन आप बात समझ, यह सिर्फ एक उदाहरण है .. यही कारण है कि जब आप एक ही दृश्य आपके आवेदन के कई भागों में instantiated करना होगा है।

इसके अलावा, देखें का लाभ प्रस्तुतकर्ता जानते हुए भी कि आप केवल अपने दृश्य परियोजना में प्रस्तुतकर्ता को संदर्भित करने की जरूरत है, तो आप कर सकते हैं विभिन्न यूआई अनुप्रयोगों में एक ही प्रस्तुतकर्ता का फिर से उपयोग। नहीं तो आप प्रस्तुतकर्ता में हर देखें परियोजना को संदर्भित करने की आवश्यकता होगी ..

लेकिन क्या अधिक महत्वपूर्ण है कि कैसे विभिन्न मॉडलों अपने मामले फिट देखने के लिए है। ईमानदारी से कहूं तो वहाँ अधिक संभावनाएं भी हैं। इस डुप्लिकेट प्रश्न देखें।

18/01/2013 को 00:15
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more