जब मैं मेरा एक परियोजना पर काम कर रहा था और नेस्टेड वस्तुओं का एक बहुत का उपयोग करने के लिए किया था, मैं जावा में संरचना के अपने डिजाइन के बहुत अनिश्चित है जब मैं एक उदाहरण चर सेट करना चाहता था बन गया ऊपरी वस्तु से गहराई से घोंसला वाली वस्तु का। ऐसा लगता है कि मुझे जावा में संरचित डिज़ाइन की बुनियादी समझ याद आती है। इसमें कोई अंतर्दृष्टि की सराहना की जाती है।जावा डिजाइन: का दोहराव तरीकों उप वस्तुओं
कल्पना कीजिए मैंने किसी चीज़ जो चर के रूप में नेस्ट उप वस्तुओं होने के एक तार्किक संरचना है की है। उदाहरण के लिए:
Country
Capital
Palace
King
मैं अब मुख्य उद्देश्य (देश) से एक निजी स्ट्रिंग वैरिएबल राजा में 'nameOfKing' सेट करना चाहते हैं, मैं राजा के सभी उच्च वर्गों में हर विधि को परिभाषित करना होगा। इस तरह तो कुछ:
public class Country {
private Capital capital;
public void setNameOfKing(String n) {
capital.setNameOfKing(n);
}
}
public class Capital{
private Palace palace;
public void setNameOfKing(String n) {
palace.setNameOfKing(n);
}
}
public class Palace{
private King king;
public void setNameOfKing(String n) {
king.setNameOfKing(n);
}
}
public class King{
private String nameOfKing;
public void setNameOfKing(String n) {
this.nameOfKing = n;
}
}
ताकि मैं country.setNameOfKing(n);
कॉल कर सकते हैं। अगर आप बस कुछ ही चर है, लेकिन क्या हुआ अगर कक्षाओं राजा, पैलेस, कैपिटल प्रत्येक कई अन्य चर और तरीकों परिभाषित और उन सभी के लिए है देश से के नाम से जाना है अब इस ठीक है। क्या होगा अगर पैलेस भी तरह (सिर्फ सामान को बनाने अब) अन्य वर्ग ऑब्जेक्ट हैं ThroneRoom, ट्रेजरी, रानी, आदि ... यह उप कक्षाओं में लगभग सभी तरीकों के लिए मतलब यह होगा कि, एक देश वर्ग में मौजूद है, जो कर सकते थे संभावित रूप से मतलब है कि आपको उप-वस्तुओं को जानकारी देने के लिए बस एक बड़ी मात्रा में विधियां बनाना पड़ता है जिसके परिणामस्वरूप बहुत बड़ी देश वर्ग होती है।
अब मुझे लगता है कि आप तकनीकी रूप से कह सकते हैं कि राजा को देश में भी परिभाषित किया जा सकता है, जो पैलेस और राजधानी में अतिरिक्त तरीकों से दूर हो रहा है, लेकिन इसका मतलब यह भी होगा कि देश वर्ग में विधियों को मौजूद होना चाहिए और क्या होगा इस संरचना को समझ में आता है कि तर्क समूह में एक साथ समूहित है, इसके लिए सबसे अच्छा तरीका क्या होगा? मुझे यकीन नहीं है कि एक बेहतर तरीका है, लेकिन मैं महसूस नहीं कर सकता कि मुझे कुछ याद आ रहा है।
तो 'getPalace()। SetFoo()' कोई विकल्प नहीं है? –
तो क्या आप इस तरह देश वर्ग में मेथिड बदलना चाहते हैं? 'capital.getPalace()।setNameOfKing (n); 'यह इस तथ्य को बदल देगा कि आप देश वर्ग – lokipoki