जैसा कि इंटरफ़ेस अलगाव सिद्धांत बताता है कि किसी भी ग्राहक को उन तरीकों पर निर्भर होने के लिए मजबूर नहीं किया जाना चाहिए जो इसका उपयोग नहीं करते हैं, इसलिए एक क्लाइंट को अपने इंटरफ़ेस के तरीकों के लिए एक खाली पद्धति को लागू नहीं करना चाहिए, अन्यथा इस इंटरफ़ेस विधि को किसी अन्य इंटरफ़ेस में डाला जाना चाहिए।
लेकिन ठोस तरीकों के बारे में कैसे? क्या मुझे उन तरीकों को अलग करना चाहिए जो हर ग्राहक उपयोग नहीं करेगा? निम्नलिखित वर्ग पर विचार करें:
public class Car{
....
public boolean isQualityPass(){
...
}
public int getTax(){
...
}
public int getCost(){
...
}
}
public class CarShop{
...
public int getCarPrice(int carId){
Car car=carList[carId];
int price=car.getTax() + car.getCost()... (some formula);
return price;
}
}
उपरोक्त कोड में, CarShop कार में isQualityPass () का उपयोग नहीं करता है, क्या मुझे isQualityPass () को एक नए वर्ग में अलग करना चाहिए:
public class CheckCarQualityPass{
public boolean isQualityPass(Car car){
}
}
कारशॉप के युग्मन को कम करने के लिए? क्योंकि मुझे लगता है कि एक बार अगर qQualityPass () को अतिरिक्त निर्भरता की आवश्यकता होती है, जैसे:
public boolean isQualityPass(){
HttpClient client=...
}
CarShop HttpClient पर निर्भर करेगा यहां तक कि यह कभी भी HttpClient का उपयोग नहीं करता है। तो मेरा सवाल यह है: इंटरफ़ेस-अलगाव के सिद्धांत के अनुसार, क्या मुझे ऐसे ठोस तरीकों को अलग करना चाहिए जो हर ग्राहक उपयोग न करें, ताकि उन तरीकों को केवल क्लाइंट पर निर्भर करें जब ग्राहक वास्तव में उपयोग करता है, ताकि युग्मन को कम किया जा सके?
Car
कक्षा में एक ऐसी विधि है, जिसे आप (सभी) उपयोगकर्ता नहीं जानना चाहते हैं, तब (एक से अधिक) इंटरफ़ेस बनाएं जिसके बारे में वह Car
क्लास लागू करता है जो केवल इंटरफेस के संदर्भ में उपयोगी विधियों की घोषणा करता है।