पर बिल्डर पैटर्न का उपयोग कर सकता हूं, मैं कुछ कोड दोबारा लिख रहा हूं, और मैंने कक्षा को फिर से बनाने का तरीका तय किया है, क्योंकि निश्चित संख्या में चादरें हैं, मैं उन्हें enums के रूप में बना रहा हूं । यह एक टेलीस्कोपिंग कन्स्ट्रक्टर बनाम बिल्डर पटर की पठनीयता के आधार पर एक निर्णय है।क्या मैं जावा एनम
कोड मैं कुछ .xls फ़ाइलों को पकड़ता हूं, हेडर जोड़ता है (और अन्य .xls फ़ाइलों से कुछ पढ़ता है) और शायद कुछ सब-शीट्स। इसके बाद यह मुख्य एक्सेल कार्यपुस्तिका पर टैब बनाने के लिए एक विशिष्ट तरीके से इन चादरों में से एक को विलय करता है। मेरी समस्या यह है कि कुछ कार्यपुस्तिका टैब विभिन्न चादरें लेते हैं तर्क हैं। मैं बिल्डर पैटर्न को लागू करने की कोशिश कर रहा हूं।
public enum workBookSheet {
mySheet1("Name1","mainSheet1.xls",true,1).addSubSheet("pathToSubSheet1.xls"),
mySheet2("Name2","mainSheet2.xls",true,2).addHeaderSheet("pathToHeaders.xls").addSubsheet("pathtoSubSheet2.xls");
private String tabName;
private String mainSheetName;
private Boolean available;
private Integer order;
private String subSheetName;
private String headerSheetName;
private workBookSheet(String tabName, String mainSheetName, Boolean available, Integer order){
this.tabName = tabName;
this.mainSheetName = mainSheetName;
this.available = available;
this.order = order;
}
public workBookSheet addSubSheet(String subSheetName){
this.subSheetName = subSheetName;
return this;
}
public workBookSheet addHeaderSheet(String headerSheetName){
this.headerSheetName = headerSheetName;
return this;
}
}
त्रुटि है कि जावा दे रहा है (अल्पविराम शीर्ष पर सीमांकित 'enum कंस्ट्रक्टर्स की सूची) ने मुझे बताया है कि जावा मेरी enum घोषणा की उम्मीद लगती है: इस कोड की तरह मैं लिखने के लिए कोशिश कर रहा हूँ है इसमें केवल निर्माता ही है, और अतिरिक्त तरीकों से नहीं। मैं शिकायत के बिना उन तरीकों को नीचे 'बिल्डर' विधि में स्थानांतरित कर सकता हूं।
public void buildSheets(){
mySheet1.addSubSheet("pathToSubSheet1.xls");
mySheet2.addHeaderSheet("pathToHeaders.xls").addSubSheet("pathtoSubSheet2.xls");
}
यह एक enum पर एक बिल्डर पैटर्न लागू करने के लिए एक ही रास्ता है? मुझे एक अलग विधि चलाने की आवश्यकता है, जो बहुत अधिक परेशानी नहीं है। आईटी कैसा लगता है जैसे मैं पैटर्न को तोड़ने के कर रहा हूँ, हालांकि (मैं इस तरह के एक बुरी बात लगता है, नहीं है कि अगर यह काम करता है।)
नायब मैं इतने पर चारों ओर देखने के लिए अगर किसी और को इस सवाल से कहा है कि अच्छी तरह से देखने मिला है, या वेब पर कहीं और। मैंने पाया सबसे नज़दीकी Enums और कारखानों पर एक सवाल था, लेकिन यह मेरे सवाल का काफी जवाब नहीं है। इसके अलावा मुझे पता है कि यह काफी बिल्डर पैटर्न नहीं है, क्योंकि मेरे पास एक अलग वर्ग नहीं है जो तब एक बिल्ड() विधि स्वीकार करता है जो एक नया enum बनाता है। मुझे लगता है कि यह मेरे प्रारंभिक डिजाइन में समस्या की जड़ है, लेकिन मैं जावा के लिए अपेक्षाकृत नया हूं।
तो क्या जावा एनम पर बिल्डर पैटर्न का उपयोग करने का कोई बेहतर तरीका है? या मेरे पास 'पर्याप्त करीब' है? (पैरामीटर निर्माता को पारित करने के लिए)
क्या यह ऐसा कुछ है जिसे आपने पहले उपयोग किया है, या यह नया कोड है जिसे आपने एक उदाहरण के रूप में लिखा है? – Pureferret
दोनों का थोड़ा सा। मैं एक निर्माता का उपयोग करना चाहता था, कुछ जवाब मिला लेकिन उन्हें पसंद नहीं आया, और इस तरह से ऐसा करने के साथ आया। तब मैंने सोचा कि अगर मैं किसी की मदद करता हूं तो मैं इस समाधान में अपना समाधान साझा करूंगा। –
आपको बहुत बहुत धन्यवाद! इसने मेरी enum कक्षा को और अधिक पठनीय बना दिया। –