मैं अपनी समस्या का बेहतर समाधान नहीं निकाल सकता। मेरे पास एक दृश्य नियंत्रक है जो तत्वों की एक सूची प्रस्तुत करता है। वे तत्व ऐसे मॉडल हैं जो B, C, D, आदि का उदाहरण हो सकते हैं और A. से इनहेरिट कर सकते हैं। इसलिए उस व्यू कंट्रोलर में, प्रत्येक आइटम को एप्लिकेशन की एक अलग स्क्रीन पर जाना चाहिए और उपयोगकर्ता द्वारा उनमें से किसी एक को चुनने पर कुछ डेटा पास करना चाहिए। । मेरे दिमाग में आने वाले दो विकल्प हैं (कृपया सिंटैक्स को अनदेखा करें, यह कोई विशिष्ट भाषा नहीं है)
1) स्विच (मुझे पता है कि बेकार है)
//inside the view controller
void onClickItem(int index) {
A a = items.get(index);
switch(a.type) {
case b:
B b = (B)a;
go to screen X;
x.v1 = b.v1; // fill X with b data
x.v2 = b.v2;
case c:
go to screen Y;
etc...
}
}
2) बहुरूपता
//inside the view controller
void onClickItem(int index) {
A a = items.get(index);
Screen s = new (a.getDestinationScreen()); //ignore the syntax
s.v1 = a.v1; // fill s with information about A
s.v2 = a.v2;
show(s);
}
//inside B
Class getDestinationScreen(void) {
return Class(X);
}
//inside C
Class getDestinationScreen(void) {
return Class(Y);
}
समाधान 2 के साथ मेरी समस्या यह है कि चूंकि बी, सी, डी, आदि मॉडल हैं, इसलिए उन्हें संबंधित सामग्री को देखने के बारे में पता नहीं होना चाहिए। या वे उस मामले में होना चाहिए?