2009-06-27 9 views
5

ऐप्पल आईफोन ऐप्स द्वारा एमवीसी के रूप में उपयोग किए जाने वाले वास्तुकला पैटर्न का वर्णन करता है। हालांकि, वस्तुतः कोई आधुनिक अनुप्रयोग एमवीसी का उपयोग नहीं करता है (जैसा कि ट्रिगवे रेन्सकाग द्वारा वर्णित है)। आईफोन ओएस सहित आधुनिक ऑपरेटिंग सिस्टम, मूल रूप से नियंत्रक जिम्मेदारियों को संभालते हैं। गलती से क्या माना जाता है और आमतौर पर एमवीसी के रूप में जाना जाता है वास्तव में एमवीपी है।ऐप्पल का कहना है कि आईफोन ऐप्स एमवीसी का उपयोग क्यों करते हैं?

एप्पल MVC क्यों कहता है और एमवीपी नहीं?

+0

स्टैक ओवरफ्लो एमवीसी –

+0

"वर्चुअल रूप से कोई आधुनिक एप्लिकेशन एमवीसी का उपयोग नहीं करता" का उपयोग करके बनाया गया था। क्या इसका कोई स्रोत है? मैं इसके बारे में और जानना चाहता हूं। – huggie

उत्तर

18

अरे! यह निश्चित रूप से एक अच्छा सवाल है - और यह एक है मुझे यकीन नहीं है कि मुझे जवाब पता है। मुझे लगता है कि ऐप्पल लगभग एमवीसी शब्द का सार्वभौमिक रूप से उपयोग करता है क्योंकि कोको/एपकिट में कई विचार डेटा बाइंडिंग का उपयोग सीधे मॉडल से डेटा खींचने के लिए करते हैं और यह एमवीपी पैटर्न के साथ टूट जाता है। नीचे दिए गए आरेख में (This article से), एमवीपी मॉडल प्रस्तुतकर्ता के माध्यम से चल रहे सभी डेटा दिखाता है - और यह आम तौर पर अच्छी तरह से निर्मित कोको ऐप्स के मामले में नहीं है।

सबसे कोको क्षुधा, डेटा बाइंडिंग और की-वैल्यू अवलोकन में उन्हें अद्यतन करने के लिए नियंत्रक की बातचीत की आवश्यकता के बिना एक साथ देख सकते हैं और मॉडल के लिए बाध्य किया जाता है। इसके अलावा, कोको ऐप्स में एक प्राथमिक नियंत्रक होता है जो निर्धारित करता है कि कब और कहां लोड किए जाते हैं। glenn_block की प्रतिक्रिया से this question के लिए उधार लेने के लिए:

MVC में, नियंत्रक निर्धारण जो दृश्य किसी भी कार्रवाई जब आवेदन भार सहित के जवाब में प्रदर्शित किया जाता है के लिए जिम्मेदार है। यह एमवीपी से अलग है जहां कार्रवाई प्रस्तुतकर्ता को देखें के माध्यम से मार्ग।

alt text http://blog.vuscode.com/blogs/blogs/malovicn/WindowsLiveWriter/ModelViewPresenterMVPVSModelViewControll_1327B/image_15.png

आशा है कि मदद करता है! यह ऐप्पल के हिस्से पर एक पूरी तरह से यादृच्छिक निर्णय हो सकता है - लेकिन मुझे लगता है कि उनकी पसंद उचित है।

+0

कोको में मॉडल और दृश्य सीधे एमवीसी के रूप में बातचीत नहीं करते हैं। यह वास्तव में निष्क्रिय दृश्य संस्करण का एमवीपी है। – Tinku

+1

आपके एमवीपी आरेख में, दृश्य और प्रस्तुतकर्ता के बीच वह सर्कल क्या है? (हरा सर्कल को इंगित करने वाला लाल तीर) – huggie

+0

आरेख का लिंक टूटा हुआ है। इसके अलावा, इसमें सर्कल का अर्थ संभवतः व्यू द्वारा खुलासा किया गया सार्वजनिक इंटरफ़ेस है (जिसे प्रस्तुतकर्ता दृश्य के डेटा का अनुरोध करने के लिए उपयोग करता है और/या दृश्य को अद्यतन करता है, जैसा कि यहां देखा गया है [https://richnewman.wordpress.com/2008/ 02/26/मॉडल-दृश्य-प्रस्तोता-विविधताओं-ऑन-द बुनियादी पैटर्न परिचय करने वाली cabscsf-भाग -24 /))। – Piovezan

8

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

मैं असहमत हूं।

पॉल हेगार्टी के अनुसार, पाठ्यक्रम सीएस 1 9 3 पी (आईओएस 7 पर प्रोग्रामिंग) के स्टैनफोर्ड प्रोफेसर, कोको में मॉडल कभी भी दृश्य से बात नहीं करता है। मैंने सभी पाठ्यक्रमों को देखा है (2011, 2012, 2013, वे सभी आईट्यून्सयू पर स्वतंत्र रूप से उपलब्ध हैं), और हर बार जब वह इसे दोहराते हैं। 2013 के पतन में वह गानों (आपके मॉडल) की एक सूची का उदाहरण बनाता है जिसे आप अपने आईफोन (दृश्य के रूप में) में प्रदर्शित करना चाहते हैं: दृश्य नियंत्रक को गाने का एक गुच्छा प्रदर्शित करने के लिए कहता है, और यह कर्तव्य है मॉडल से बात करने के लिए नियंत्रक, कुछ गाने लें, और उन्हें दृश्य में धक्का दें। दृश्य केवल गाने प्रदर्शित करेगा। दृश्य कभी मॉडल डेटा रखता है।

वह कहता है कि केवीओ (मुख्य मूल्य निरीक्षण) मॉडल और नियंत्रक के बीच संचार के लिए एक पटर है। कोई बाध्यकारी नहीं है।

मुझे लगता है कि "ऐप्पल एमवीसी" == "माइक्रोसॉफ्ट एमवीपी"।

"माइक्रोसॉफ्ट एमवीसी" केवल वेब के लिए है, और इसे "एएसपी.नेट एमवीसी 4" कहा जाता है। वेब में, नियंत्रक "उपयोगकर्ता इनपुट प्रविष्टि बिंदु" है, जबकि डेस्कटॉप/स्पर्श में दृश्य

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