backwards compatibility - Java API break -
मेरे पास निम्न एपीआई है:
सार्वजनिक इंटरफ़ेस MyApi {/ ** * कुछ काम करता है सामान। * @ थ्रेस माइ एक्सडेस्टेशन अगर हालत सी 1 * / पब्लिक व्हॉयड मेथड () मेरी एक्सप्शन फेंकता है; }
अब मैं अपने एपीआई कार्यान्वयन में निम्नलिखित संशोधन कर रहा हूं
सार्वजनिक वर्ग MyApiImpl {सार्वजनिक शून्य विधि ()) MyException फेंकता है (यदि (सी 1) { नया माइएक्सेशन फेंक ("सी 1 संदेश"); } ...}}
द्वारा प्रतिस्थापित किया गया है:
सार्वजनिक वर्ग MyApiImpl {सार्वजनिक शून्य विधि ()) MyException फेंकता {यदि (सी 1) {नया मेरा एक्सपेक्शन ("सी 1 संदेश"); } और अगर (सी 2) {नया माइएक्सेशन ("सी 2 संदेश"); } ...}}
क्या आप इसे एपीआई ब्रेएटेज के रूप में मानते हैं?
क्लाइंट का कोड अभी भी संकलित होगा लेकिन एपीआई जावा के द्वारा परिभाषित विधि अनुबंध का कोई और सम्मान नहीं है चूंकि मायएक्ससीपिटोन को "नई" स्थिति से फेंक दिया जाता है।
यदि केवल मेरी एपीआई जार फाइल अपडेट होती है, तो क्लाइंट अनुप्रयोग अभी भी काम करेगा लेकिन क्लाइंट को अपवाद को पकड़ने के तरीके के आधार पर आवेदन व्यवहार बहुत बदल सकता है। / P>
आपका क्या दृष्टिकोण है?
जी हां, आप तोड़ रहे हैं सी 1 होने पर अपवाद फेंकने के द्वारा अंतरफलक का अनुबंध।
अंगूठे के नियम के रूप में, इंटरफेस कॉन्ट्रैक्ट के योनि के रूप में, इसे तोड़ना आसान नहीं है :) यदि अंतरफलक परिभाषित नहीं है एक स्पष्ट सी 1 के संदर्भ में, लेकिन अधिक सामान्य शब्दों में, इससे अधिक लचीलेपन मिलता है।
Comments
Post a Comment