प्रेज़ेंटर और व्यू मॉडल
समझें कि प्रेज़ेंटर उपयोग-मामलों से प्राप्त डेटा को यूआई में प्रदर्शित करने योग्य व्यू मॉडल में कैसे स्वरूपित करते हैं।
प्रेज़ेंटर और व्यू मॉडल, CoddyKit पर व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
उपयोगकर्ताओं के लिए डेटा प्रस्तुत करना
क्लीन आर्किटेक्चर में सबसे बाहरी परत फ़्रेमवर्क और ड्राइवरों के लिए समर्पित होती है, जिसमें हमारा उपयोगकर्ता इंटरफ़ेस (यूआई) भी शामिल है। हम अपने मुख्य व्यावसायिक तर्क (उपयोग-प्रकरणों) से डेटा स्क्रीन पर दिखाने के लिए प्रभावी रूप से कैसे भेजें?
यहीं प्रस्तुतकर्ता और दृश्य मॉडल काम आते हैं। ये महत्वपूर्ण अडैप्टर के रूप में आपके अनुप्रयोग के मूल भाग और उसके दृश्य निरूपण के बीच की दूरी को पाटते हैं।
प्रस्तुतकर्ता का उद्देश्य
प्रस्तुतकर्ता यूआई के लिए डेटा तैयार करने वाला मध्यस्थ होता है। इसे उपयोग-प्रकरण से मिला 'कच्चा' आउटपुट प्राप्त होता है, जिसमें अक्सर अनुप्रयोग परत की व्यावसायिक इकाइयाँ या विशिष्ट डेटा ट्रांसफ़र ऑब्जेक्ट (डीटीओ) होते हैं।
- यह उपयोग-प्रकरण के आउटपुट को यूआई के अनुकूल प्रारूप में बदलता है।
- यह प्रस्तुति तर्क संभालता है, जैसे तारीखों का प्रारूप बदलना या स्ट्रिंग को जोड़ना।
- इसमें व्यावसायिक नियम या डेटा पहुँच तर्क नहीं होता।
दृश्य मॉडल क्या है?
दृश्य मॉडल एक साधारण डेटा संरचना होती है, जिसे विशेष रूप से किसी एक दृश्य या यूआई घटक के लिए बनाया जाता है। इसमें उस दृश्य को प्रदर्शित करने के लिए आवश्यक डेटा ही होता है, उससे अधिक कुछ नहीं।
- यह बिना किसी व्यवहार वाला 'मूर्ख' डेटा कंटेनर होता है।
- इसमें केवल यूआई से संबंधित प्रॉपर्टी होती हैं।
- यह यूआई को मूल डोमेन ऑब्जेक्ट से अलग करता है, जिससे यूआई सरल बनता है।
इसे ठीक उस खाके की तरह समझें, जिसमें आपकी स्क्रीन पर दिखाने के लिए आवश्यक सभी चीज़ें परिभाषित हों।
प्रस्तुतकर्ता और दृश्य मॉडल का प्रयोग
क्लीन आर्किटेक्चर के प्रवाह में प्रस्तुतकर्ता और दृश्य मॉडल आम तौर पर इस प्रकार साथ काम करते हैं:
- उपयोगकर्ता की कार्रवाई किसी उपयोग-प्रकरण को सक्रिय करती है, जैसे 'उपयोगकर्ता विवरण प्राप्त करें'।
- उपयोग-प्रकरण व्यावसायिक तर्क चलाता है और परिणाम देता है, जैसे
UserOutputDataऑब्जेक्ट। - यह परिणाम किसी प्रस्तुतकर्ता को भेजा जाता है।
- प्रस्तुतकर्ता
UserOutputDataको UserViewModel में बदलता है। - इसके बाद यूआई सीधे UserViewModel का उपयोग करके उसे प्रदर्शित करता है।
यह अलगाव क्यों महत्वपूर्ण है
प्रस्तुतकर्ता और दृश्य मॉडल का उपयोग करने से आर्किटेक्चर को महत्वपूर्ण लाभ मिलते हैं:
- यूआई की स्वतंत्रता: आपके अनुप्रयोग के मूल तर्क को यह जानने या इसकी चिंता करने की आवश्यकता नहीं होती कि डेटा कैसे प्रदर्शित किया जाता है।
- परीक्षण-योग्यता: प्रस्तुतकर्ता साधारण ऑब्जेक्ट होते हैं, इसलिए उनके रूपांतरण तर्क का यूआई फ़्रेमवर्क के बिना यूनिट परीक्षण करना आसान होता है।
- लचीलापन: आप अपने उपयोग-प्रकरणों या इकाइयों में बदलाव किए बिना यूआई फ़्रेमवर्क बदल सकते हैं, जैसे पुराने फ़्रेमवर्क से नए फ़्रेमवर्क पर जाना।
उदाहरण: उपयोग-प्रकरण का आउटपुट
आइए ऐसे उपयोग-प्रकरण पर विचार करें जो उपयोगकर्ता का विवरण प्राप्त करता है। यह कच्ची जानकारी वाला इस प्रकार का डेटा ऑब्जेक्ट लौटा सकता है:
public class UserOutputData {
private String firstName;
private String lastName;
private String email;
private long registrationTimestamp; // epoch seconds
public UserOutputData(String firstName, String lastName, String email, long registrationTimestamp) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.registrationTimestamp = registrationTimestamp;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String getEmail() { return email; }
public long getRegistrationTimestamp() { return registrationTimestamp; }
}दृश्य मॉडल का डिज़ाइन
अपने यूआई में हम उपयोगकर्ता का पूरा नाम और अच्छी तरह प्रारूपित पंजीकरण तारीख दिखाना चाहते हैं। UserOutputData का कच्चा टाइमस्टैम्प सीधे प्रदर्शित नहीं किया जा सकता। इसलिए हम इस उद्देश्य के लिए विशेष रूप से एक UserViewModel बनाते हैं:
public class UserViewModel {
private String fullName;
private String formattedRegistrationDate;
public UserViewModel(String fullName, String formattedRegistrationDate) {
this.fullName = fullName;
this.formattedRegistrationDate = formattedRegistrationDate;
}
public String getFullName() { return fullName; }
public String getFormattedRegistrationDate() { return formattedRegistrationDate; }
}प्रस्तुतकर्ता बनाना
अब आइए एक UserPresenter बनाएँ। इसका काम UserOutputData लेकर उसे UserViewModel में बदलना और आवश्यक प्रारूपण या प्रस्तुति तर्क संभालना है।
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
public class UserPresenter {
public UserViewModel present(UserOutputData outputData) {
// Combine first and last name for display
String fullName = outputData.getFirstName() + " " + outputData.getLastName();
// Format the timestamp into a readable date string
Instant instant = Instant.ofEpochSecond(outputData.getRegistrationTimestamp());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")
.withZone(ZoneId.systemDefault());
String formattedDate = formatter.format(instant);
return new UserViewModel(fullName, formattedDate);
}
}प्रस्तुतकर्ता का प्रवाह चलाना
यह एक पूरा, चलने योग्य उदाहरण है, जो दिखाता है कि कोई उपयोग-प्रकरण डेटा कैसे लौटा सकता है और फिर प्रस्तुतकर्ता उसे संसाधित करके यूआई द्वारा प्रदर्शित करने के लिए तैयार कर सकता है।
import java.time.Instant;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
// Simulate Use Case Output
class UserOutputData {
private String firstName;
private String lastName;
private String email;
private long registrationTimestamp;
public UserOutputData(String firstName, String lastName, String email, long registrationTimestamp) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.registrationTimestamp = registrationTimestamp;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String getEmail() { return email; }
public long getRegistrationTimestamp() { return registrationTimestamp; }
}
// View Model for UI
class UserViewModel {
private String fullName;
private String formattedRegistrationDate;
public UserViewModel(String fullName, String formattedRegistrationDate) {
this.fullName = fullName;
this.formattedRegistrationDate = formattedRegistrationDate;
}
public String getFullName() { return fullName; }
public String getFormattedRegistrationDate() { return formattedRegistrationDate; }
}
// Presenter logic
class UserPresenter {
public UserViewModel present(UserOutputData outputData) {
String fullName = outputData.getFirstName() + " " + outputData.getLastName();
Instant instant = Instant.ofEpochSecond(outputData.getRegistrationTimestamp());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")
.withZone(ZoneId.systemDefault());
String formattedDate = formatter.format(instant);
return new UserViewModel(fullName, formattedDate);
}
}
public class Main {
public static void main(String[] args) {
// 1. Simulate Use Case returning data
UserOutputData userData = new UserOutputData(
"Alice", "Smith", "alice@example.com", 1678886400L // March 15, 2023 12:00:00 PM UTC
);
// 2. Presenter transforms data
UserPresenter presenter = new UserPresenter();
UserViewModel viewModel = presenter.present(userData);
// 3. UI "displays" the ViewModel
System.out.println("Displaying User Profile:");
System.out.println("Name: " + viewModel.getFullName());
System.out.println("Registered: " + viewModel.getFormattedRegistrationDate());
}
}अपने ज्ञान का परीक्षण करें
निम्नलिखित में से कौन-सा विकल्प क्लीन आर्किटेक्चर में दृश्य मॉडल की प्राथमिक भूमिका का सबसे अच्छा वर्णन करता है?
अपना डेटा सुव्यवस्थित ढंग से प्रस्तुत करना
इस पाठ में हमने जाना कि क्लीन आर्किटेक्चर की प्रस्तुति परत में प्रस्तुतकर्ता और दृश्य मॉडल महत्वपूर्ण भूमिका निभाते हैं।
- प्रस्तुतकर्ता डेटा विशेषज्ञ की तरह काम करते हैं और उपयोग-प्रकरण के आउटपुट को यूआई के अनुकूल प्रारूप में बदलते हैं।
- दृश्य मॉडल सरल, यूआई-विशिष्ट डेटा संरचनाएँ होते हैं, जिनमें केवल प्रदर्शन के लिए आवश्यक डेटा होता है।
- यह अलगाव परीक्षण-योग्यता बढ़ाता है, यूआई की स्वतंत्रता बनाए रखता है और यूआई में लचीले बदलावों की अनुमति देता है।
इन पैटर्न का उपयोग करने से आपके अनुप्रयोग का मूल तर्क प्रस्तुति संबंधी विवरणों से मुक्त और स्वच्छ बना रहता है, जिससे आपका तंत्र अधिक मजबूत और रखरखाव योग्य बनता है।
एआई शिक्षक के साथ व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 12
- पाठ
- 48
अक्सर पूछे जाने वाले प्रश्न
क्या “प्रेज़ेंटर और व्यू मॉडल” पाठ निःशुल्क है?
हाँ—“प्रेज़ेंटर और व्यू मॉडल” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“प्रेज़ेंटर और व्यू मॉडल” में मैं क्या सीखूँगा?
समझें कि प्रेज़ेंटर उपयोग-मामलों से प्राप्त डेटा को यूआई में प्रदर्शित करने योग्य व्यू मॉडल में कैसे स्वरूपित करते हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“प्रेज़ेंटर और व्यू मॉडल” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर व्यवहार में क्लीन आर्किटेक्चर और डिज़ाइन पैटर्न पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- प्रेज़ेंटर और व्यू मॉडल
- वेब फ़्रेमवर्क के अनुरूप बनना
- प्रस्तुति परत का परीक्षण
- विनम्र ऑब्जेक्ट और दृश्य सीमा