जैसा कि स्पोइक द्वारा इंगित किया गया है, सही त्रुटि हैंडलिंग विधि चुनने के लिए बहुरूपता का उपयोग करना एक विकल्प है। क्लास पदानुक्रम को परिभाषित करके, यह दृष्टिकोण मूल रूप से 10+ को अवरुद्ध करता है यदि JVM के वर्चुअल विधि लुकअप को ब्लॉक करता है।
लेकिन एक पूर्ण उड़ा वर्ग पदानुक्रम के लिए जाने से पहले, enum
विधियों का उपयोग करने पर भी विचार करें। यह विकल्प अच्छी तरह से काम करता है यदि आप प्रत्येक मामले में क्या करना चाहते हैं तो काफी समान है।
उदाहरण के लिए, यदि आप प्रत्येक ErrorCode
के लिए कोई दूसरा त्रुटि संदेश वापस करना चाहते, तो आप बस यह कर सकते हैं:
// Note singular name for enum
public enum ErrorCode {
INVALID_LOGIN(100, "Your login is invalid"),
INVALID_PASSWORD(101, "Your password is invalid"),
SESSION_EXPIRED(102, "Your session has expired");
private final int code;
private final String
private ErrorCode(int code, String message){
this.code = code;
this.message = message;
}
public String getMessage() {
return message;
}
}
फिर अपने त्रुटि हैंडलिंग कोड सिर्फ हो जाता है:
ErrorCode errorCode = getErrorCode();
prompt(errorCode.getMessage());
एक दोष इस दृष्टिकोण का यह है कि यदि आप अतिरिक्त मामलों को जोड़ना चाहते हैं, तो आपको enum को संशोधित करने की आवश्यकता होगी, जबकि कक्षा पदानुक्रम के साथ आप मौजूदा कोड को संशोधित किए बिना नए मामले जोड़ सकते हैं।
क्या सिर्फ 'केस स्टेटमेंट' मदद कर रहा है या क्या मुझे कुछ याद आ रहा है? – Jean
हाँ, इस तरह से आपको हर बार अपना कार्यान्वयन बदलना होगा, एनम परिवर्तन (उदाहरण के लिए नए केस स्टेटमेंट)। अच्छे ओओ डिज़ाइन के आधार पर अपना कोड लागू करते समय आपको एक्सटेंशन के लिए खुला होने का प्रयास करना चाहिए, लेकिन संशोधनों के लिए बंद होना चाहिए। – Mephisztoe