मैं जावा लाइब्रेरी बना रहा हूं, अंतिम उत्पाद के रूप में इसे वितरित करने के इरादे में .jar डेवलपर्स को वितरित करना चाहता हूं।जावा क्लास स्कोप और लाइब्रेरी
मैं ऑब्जेक्टिव-सी से अपनी लाइब्रेरी का "अनुवाद" कर रहा हूं, जहां मैं डेवलपर को कौन सी कक्षा शीर्षलेख फ़ाइलें उपलब्ध कराता हूं, नियंत्रित करता हूं। दूसरे शब्दों में, मैं केवल डेवलपर को कुछ कक्षाओं को संभालने के लिए उजागर कर रहा हूं जो वे संभाल सकते हैं।
मेरी जावा लाइब्रेरी में मैं संकुल का उपयोग कर रहा हूं और मेरा पैकेज काफी बड़ा हो गया है। तो मैंने अपने मॉडल और नियंत्रकों के विभिन्न पैकेजों में अलग होने का फैसला किया। लेकिन अब जिन मॉडलों को मैं निजी रखना चाहता था, उन्हें मुख्य पैकेज से उपयोग करने के लिए जनता के रूप में चिह्नित करने की आवश्यकता है।
मेरा प्रश्न यह है कि मैं उद्देश्य-सी में क्या कर रहा था?
उदाहरण के लिए मेरे पास एक इवेंट क्लास है जो वास्तव में केवल आंतरिक रूप से उपयोग की जाती है और मैं नहीं चाहता कि उपयोगकर्ता इसके बारे में जान सके या इसके बारे में सोचें। मेरे पास एक और कक्षा TimedEvent है, जिसे उपयोगकर्ता प्रबंधन का एक उदाहरण प्राप्त कर सकता है।
मेरे उद्देश्य-सी में, मैंने पुस्तकालय सार्वजनिक दायरे से इवेंट क्लास को बाहर रखा, जिससे TimedEvent को अनुमति दी गई।
यदि मैं अपनी लाइब्रेरी में चीजों को और अधिक साफ कर रहा हूं तो ऐसा लगता है कि पैकेज नहीं हैं। अब से, मेरा मुख्य नियंत्रक मुख्य पैकेज में है और सभी मॉडल एक अन्य पैकेज में हैं - सार्वजनिक दायरे के लिए मजबूर होना।
राय?
अच्छा स्पर्श:
उपयोगकर्ताओं इस तरह
TimedEvent
का उपयोग होगा। क्या यह एक नई सुविधा है? –नहीं, चूंकि जावा आंतरिक कक्षाओं (1.2, मुझे लगता है) का समर्थन करता है, लेकिन यह बहुत सारे बॉयलर प्लेट कोड को जोड़ता है। –
बहुत सारी पाठ्यपुस्तकों को यह गलत लगता है। "इंटरफ़ेस: स्थिरांक और विधि घोषणाएं" –