Model–view–presenter
मॉडल-व्यू-प्रेजेंटर (एम. वी. पी.) मॉडल-व्यू-कंट्रोलर (एम. वी. सी.) वास्तुशिल्प पैटर्न की व्युत्पत्ति है, और इसका उपयोग ज्यादातर उपयोगकर्ता इंटरफेस बनाने के लिए किया जाता है। एम. वी. पी. में, प्रस्तुतकर्ता "मध्य-व्यक्ति" की कार्यक्षमता को मानता है। एम. वी. पी. में, सभी प्रस्तुति तर्क प्रस्तुतकर्ता को दिए जाते हैं। मॉडल-व्यू-प्रेजेंटर सॉफ्टवेयर पैटर्न की उत्पत्ति 1990 के दशक की शुरुआत में एप्पल, आईबीएम और हेवलेट-पैकार्ड के संयुक्त उद्यम टैलिजेंट में हुई थी। एम. वी. पी. टैलिजेंट के सी + +-आधारित कॉमनप्वाइंट वातावरण में अनुप्रयोग विकास के लिए अंतर्निहित प्रोग्रामिंग मॉडल है। पैटर्न को बाद में टैलिजेंट द्वारा जावा में स्थानांतरित कर दिया गया और टैलिजेंट सीटीओ माइक पोटेल द्वारा एक पेपर में लोकप्रिय बनाया गया। 1998 में टैलिजेंट के बंद होने के बाद, डॉल्फिन स्मॉलटॉक के एंडी बोवर और ब्लेयर मैकग्लाशन ने अपने स्मॉलटॉक यूजर इंटरफेस ढांचे के लिए आधार बनाने के लिए एमवीपी पैटर्न को अनुकूलित किया। 2006 में, माइक्रोसॉफ्ट ने. NET फ्रेमवर्क में उपयोगकर्ता इंटरफेस प्रोग्रामिंग के लिए अपने प्रलेखन और उदाहरणों में MVP को शामिल करना शुरू किया। एम. वी. पी. पैटर्न के विकास और कई प्रकार, जिसमें एम. वी. पी. का अन्य डिजाइन पैटर्न जैसे एम. वी. सी. के साथ संबंध शामिल है, पर मार्टिन फाउलर के एक लेख में और डेरेक ग्रीर के एक अन्य लेख में विस्तार से चर्चा की गई है। अवलोकन एम. वी. पी. एक उपयोगकर्ता इंटरफेस वास्तुशिल्प पैटर्न है जो स्वचालित इकाई परीक्षण को सुविधाजनक बनाने और प्रस्तुति तर्क में चिंताओं को अलग करने में सुधार करने के लिए इंजीनियर किया गया हैः मॉडल एक इंटरफेस है जो उपयोगकर्ता इंटरफेस में प्रदर्शित या अन्यथा कार्य किए जाने वाले डेटा को परिभाषित करता है। दृश्य एक निष्क्रिय इंटरफेस है जो डेटा (मॉडल) प्रदर्शित करता है और उस डेटा पर कार्य करने के लिए प्रस्तुतकर्ता को उपयोगकर्ता आदेश (घटनाओं) का मार्ग बताता है। प्रस्तुतकर्ता मॉडल और दृश्य पर कार्य करता है। यह रिपॉजिटरी (मॉडल) से डेटा प्राप्त करता है, और इसे दृश्य में प्रदर्शित करने के लिए प्रारूपित करता है। आम तौर पर, दृश्य कार्यान्वयन ठोस प्रस्तुतकर्ता वस्तु को तत्काल प्रस्तुत करता है, जो स्वयं को एक संदर्भ प्रदान करता है। निम्नलिखित सी #कोड एक सरल दृश्य निर्माता को प्रदर्शित करता हैः सार्वजनिक वर्ग प्रस्तुतकर्ताः आईप्रेजेंटर {सार्वजनिक प्रस्तुतकर्ता (आईव्यू दृश्य) {//.}} सार्वजनिक वर्ग दृश्यः आईव्यू {निजी आईप्रेजेंटर _ प्रस्तुतकर्ता; सार्वजनिक दृश्य () {_ प्रस्तुतकर्ता = नया प्रस्तुतकर्ता (यह);} दृश्य में अनुमत तर्क की डिग्री विभिन्न कार्यान्वयनों के बीच भिन्न होती है। एक चरम पर, दृश्य पूरी तरह से निष्क्रिय है, जो सभी बातचीत कार्यों को प्रस्तुतकर्ता को अग्रेषित करता है। इस सूत्रीकरण में, जब कोई उपयोगकर्ता दृश्य की एक घटना विधि को चालू करता है, तो यह प्रस्तुतकर्ता की एक विधि को लागू करने के अलावा कुछ नहीं करता है जिसमें कोई मापदंड नहीं है और कोई वापसी मूल्य नहीं है। प्रस्तुतकर्ता तब व्यू इंटरफेस द्वारा परिभाषित विधियों के माध्यम से व्यू से डेटा प्राप्त करता है। अंत में, प्रस्तुतकर्ता मॉडल पर काम करता है और ऑपरेशन के परिणामों के साथ दृश्य को अद्यतन करता है। मॉडल-व्यू-प्रेजेंटर के अन्य संस्करण कुछ अक्षांश की अनुमति देते हैं जिसके संबंध में वर्ग किसी विशेष बातचीत, घटना या आदेश को संभालता है। यह अक्सर वेब-आधारित वास्तुकला के लिए अधिक उपयुक्त होता है, जहां दृश्य, जो किसी ग्राहक के ब्राउज़र पर निष्पादित होता है, किसी विशेष बातचीत या आदेश को संभालने के लिए सबसे अच्छा स्थान हो सकता है। एक परत के दृष्टिकोण से, प्रस्तुतकर्ता वर्ग को एक बहुस्तरीय वास्तुकला प्रणाली में अनुप्रयोग परत से संबंधित माना जा सकता है, लेकिन इसे अनुप्रयोग परत और उपयोगकर्ता इंटरफेस परत के बीच अपनी खुद की प्रस्तुतकर्ता परत के रूप में भी देखा जा सकता है। कार्यान्वयन. NET. NET वातावरण किसी भी अन्य विकास वातावरण की तरह MVP पैटर्न का समर्थन करता है। एक ही मॉडल और प्रस्तुतकर्ता वर्ग का उपयोग कई इंटरफेस का समर्थन करने के लिए किया जा सकता है, जैसे कि एक ASP.NET वेब अनुप्रयोग, एक विंडोज फॉर्म अनुप्रयोग, या एक सिल्वरलाइट अनुप्रयोग। प्रस्तुतकर्ता एक इंटरफेस के माध्यम से जानकारी प्राप्त करता है और सेट करता है जिसे इंटरफेस (व्यू) घटक द्वारा एक्सेस किया जा सकता है। पैटर्न को मैन्युअल रूप से लागू करने के अलावा, एक मॉडल-व्यू-प्रेजेंटर फ्रेमवर्क का उपयोग अधिक स्वचालित तरीके से एमवीपी पैटर्न का समर्थन करने के लिए किया जा सकता है। जावा (ए. डब्ल्यू. टी./स्विंग/एस. डब्ल्यू. टी.) अनुप्रयोग में, एम. वी. पी. पैटर्न का उपयोग उपयोगकर्ता इंटरफेस वर्ग को एक दृश्य इंटरफेस लागू करने की अनुमति देकर किया जा सकता है। जावा वेब-आधारित अनुप्रयोगों के लिए भी इसी दृष्टिकोण का उपयोग किया जा सकता है, क्योंकि आधुनिक जावा घटक-आधारित वेब फ्रेमवर्क मोटे ग्राहकों के समान घटक दृष्टिकोण का उपयोग करके क्लाइंट-साइड लॉजिक के विकास की अनुमति देते हैं। गूगल वेब टूलकिट में एम. वी. पी. को लागू करने के लिए केवल कुछ घटकों द्वारा व्यू इंटरफेस को लागू करने की आवश्यकता होती है। यही दृष्टिकोण वाडिन या इको2 वेब ढांचे का उपयोग करके संभव है। जावा फ्रेमवर्क में निम्नलिखित शामिल हैंः जावाएफएक्स इको2 गूगल वेब टूलकिट जेफेस स्विंग वाडिन जेडके पीएचपी पीएचपी के लचीले रनटाइम वातावरण के रूप में, एक अनुप्रयोग तर्क के दृष्टिकोण की व्यापक संभावनाएं हैं। मॉडल परत के कार्यान्वयन को अंतिम अनुप्रयोग प्रोग्रामर पर छोड़ दिया जाता है। पी. एच. पी. ढांचे में निम्नलिखित शामिल हैंः कोडइग्निटर लारावेल नेट फ्रेमवर्क भी देखें मल्टीटीयर आर्किटेक्चर मॉडल-व्यू-कंट्रोलर मॉडल-व्यू-मॉडल प्रस्तुतकर्ता पहले (सॉफ्टवेयर दृष्टिकोण) बाहरी संदर्भ लिंक जी. डब्ल्यू. टी. परियोजना से मॉडल व्यू प्रस्तुतकर्ता उदाहरण। स्टैकएक्सचेंज सॉफ्टवेयर डिजाइन पैटर्न में मॉडल-व्यू-प्रेजेंटर कार्यान्वयन विचार वास्तुकला पैटर्न (कंप्यूटर विज्ञान)