मेरे पास दो वस्तुएं हैं जो एक 'बार / क्लब' का प्रतिनिधित्व करती हैं (ऐसी जगह जहां आप शराब पीते हैं / सोशलाइज करते हैं)।
एक परिदृश्य में मुझे बार का नाम, पता, दूरी, स्लोगन चाहिए
दूसरे परिदृश्य में मुझे बार का नाम, पता, वेबसाइट यूआरएल, लोगो चाहिए
इसलिए मुझे एक ही चीज़ का प्रतिनिधित्व करने वाली दो वस्तुएँ मिली हैं, लेकिन विभिन्न क्षेत्रों के साथ।
मुझे अपरिवर्तनीय वस्तुओं का उपयोग करना पसंद है, इसलिए सभी फ़ील्ड कंस्ट्रक्टर से सेट किए गए हैं ।
एक विकल्प दो कंस्ट्रक्टर का है और दूसरे क्षेत्रों को शून्य करना है:
class Bar {
private final String name;
private final Distance distance;
private final Url url;
public Bar(String name, Distance distance){
this.name = name;
this.distance = distance;
this.url = null;
}
public Bar(String name, Url url){
this.name = name;
this.distance = null;
this.url = url;
}
// getters
}
मुझे यह पसंद नहीं है क्योंकि जब आप गेटर्स का उपयोग करते हैं तो आपको चेक को शून्य करना होगा
मेरे वास्तविक उदाहरण में पहले परिदृश्य में 3 फ़ील्ड हैं और दूसरे परिदृश्य में लगभग 10 हैं, इसलिए यह एक वास्तविक दर्द होगा जिसमें दो कंस्ट्रक्टर होंगे , फ़ील्ड की मात्रा को मुझे शून्य घोषित करना होगा और फिर जब ऑब्जेक्ट उपयोग में होगा तो आप ' t पता है कि Barआप कहाँ उपयोग कर रहे हैं और इसलिए कौन से क्षेत्र अशक्त होंगे और क्या नहीं।
मेरे पास अन्य विकल्प क्या हैं?
दो कक्षाएं BarPreviewऔर कहा जाता है Bar?
कुछ प्रकार की विरासत / इंटरफ़ेस?
कुछ और जो कमाल है?
You should only ask practical, answerable questions based on actual problems that you face.और ठीक यही यहाँ हो रहा है
Barमें एक पहचानकर्ता के रूप में एक वैध उपयोग के साथ आए हैं !