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