यह एक अधिक सामान्य प्रश्न है: मेरे पास स्विंग में एक बहुत ही जटिल फ़ाइल तालिका है (डेटा मॉडल तुच्छ नहीं है), और जब उपयोगकर्ता किसी प्रविष्टि पर क्लिक करता है, तो दो अन्य दृश्य घटकों को बदलने की आवश्यकता होती है - फ़ाइल आँकड़े दृश्य, और फ़ाइल सामग्री दृश्य - दोनों एक ही स्क्रीन पर।

एक विकल्प यह है कि इन सभी घटकों को एक ही फ़ाइल में वर्ग परिभाषाएँ दी जाएँ, और फिर एक-दूसरे का संदर्भ दिया जाए - लेकिन यह एक बहुत ही गन्दा कोड बना देगा।

दूसरे विकल्प के बारे में मैं सोच सकता था कि टेबल ऑब्जेक्ट में आंकड़े और सामग्री घटकों को पास करना है, और उसे इसका उपयोग करना है - लेकिन वह तालिका को प्रस्तुत नहीं करेगा - कहीं और पुन: प्रयोज्य।

मुझे यकीन है कि इसे करने का एक बेहतर तरीका है - आप क्या करने की सलाह देंगे?

विकल्प 1:

class MyPanel extends JPanel{

private MyTable table;
private MyFileViewer fv;
private MyFileStats stats;

class MyTable {
   addMouseListener({ ... fv.update(); stats.update(); })
}
class MyFileViewer{...}
class MyFileStats{...}
}

विकल्प 2:

class MyTable {

   MyTable(MyFileViewer fv, MyFileStats stats) { ... 
       addMouseListener({fv.update, stats.update ... } 
   }    
}
3
Yossale 12 अप्रैल 2011, 18:38
"... इन सभी घटकों को एक ही फ़ाइल में परिभाषित किया गया है" क्या आपका मतलब है कि उनकी कक्षा परिभाषाएं एक ही जावा फ़ाइल में हैं, या बस उन्हें वहां तुरंत चालू कर दिया है (उदा, आप बस नई फ़ाइलस्टैट्सवी और नई फ़ाइलकंटेंट व्यू को कॉल करते हैं)?
 – 
Dave
12 अप्रैल 2011, 18:51
हो सकता है कि आप जिन दो विकल्पों पर विचार कर रहे हैं, उनके लिए कुछ त्वरित छद्म कोड?
 – 
Dave
12 अप्रैल 2011, 18:51

1 उत्तर

सबसे बढ़िया उत्तर

विकल्प 3: मॉडल–व्यू–कंट्रोलर पैटर्न, जैसा कि चर्चा की गई है यहां और इस रूपरेखा में। MVC पर्यवेक्षक पैटर्न। प्रत्येक दृश्य को दूसरों को अपडेट करने के बजाय, प्रत्येक दृश्य को अपने डेटा मॉडल के श्रोता के रूप में पंजीकृत करने की व्यवस्था करें। जब मॉडल बदलता है, तो प्रत्येक दृश्य उसी के अनुसार अपडेट होता है।

5
Community 23 मई 2017, 13:33
1
घटनाओं का उपयोग करने के लिए +1। ईवेंट्स का उपयोग करने से कम युग्मित अत्यधिक संयोजक कोड बनाने में मदद मिलती है। आप आवश्यकतानुसार अपनी घटनाओं को रूट करने के लिए मध्यस्थों में छिड़काव भी कर सकते हैं।
 – 
hooknc
12 अप्रैल 2011, 20:14