लघुकथा: एक डाकिया को घर जाने के लिए कहा जाता है और कवर प्राप्त करने के लिए उस पर लिखे पते के साथ कवर (पत्र, दस्तावेज, चेक, उपहार कार्ड, आवेदन, प्रेम पत्र) प्राप्त होते हैं।
मान लीजिए कि कोई कवर नहीं है और पोस्टमैन को घर जाने के लिए कहें और सभी चीजें प्राप्त करें और अन्य लोगों को वितरित करें, पोस्टमैन भ्रमित हो सकता है।
तो बेहतर है इसे कवर के साथ लपेटें (हमारी कहानी में यह इंटरफ़ेस है) तो वह अपना काम ठीक करेगा।
अब पोस्टमैन का काम केवल कवर प्राप्त करना और वितरित करना है (वह कवर में अंदर क्या है परेशान नहीं करेगा)।
का एक प्रकार बनाएँ interface
वास्तविक प्रकार न , लेकिन इसे वास्तविक प्रकार के साथ लागू करें।
इंटरफ़ेस बनाने के लिए आपके घटकों का मतलब है कोड के बाकी हिस्सों में आसानी से फिट हो
मैं आपको एक उदाहरण देता हूं।
आपके पास नीचे जैसा AirPlane इंटरफ़ेस है।
interface Airplane{
parkPlane();
servicePlane();
}
मान लीजिए कि आपके पास योजना के अपने नियंत्रक वर्ग के तरीके हैं
parkPlane(Airplane plane)
तथा
servicePlane(Airplane plane)
आपके कार्यक्रम में लागू किया गया। यह आपके कोड को ब्रेक नहीं करेगा । मेरा मतलब है, जब तक यह तर्क स्वीकार नहीं करता है तब तक इसे बदलने की जरूरत नहीं हैAirPlane
।
क्योंकि यह वास्तविक प्रकार के बावजूद किसी भी हवाई जहाज को स्वीकार करेंगे, flyer
, highflyr
,fighter
, आदि
इसके अलावा, एक संग्रह में:
List<Airplane> plane;
// अपने सभी विमानों को ले जाएगा।
निम्नलिखित उदाहरण से आपकी समझ साफ हो जाएगी।
आपके पास एक लड़ाकू विमान है जो इसे लागू करता है, इसलिए
public class Fighter implements Airplane {
public void parkPlane(){
// Specific implementations for fighter plane to park
}
public void servicePlane(){
// Specific implementatoins for fighter plane to service.
}
}
HighFlyer और अन्य clasess के लिए एक ही बात:
public class HighFlyer implements Airplane {
public void parkPlane(){
// Specific implementations for HighFlyer plane to park
}
public void servicePlane(){
// specific implementatoins for HighFlyer plane to service.
}
}
अब AirPlane
कई बार अपने नियंत्रक वर्गों का उपयोग करके सोचें ,
मान लीजिए कि आपका नियंत्रक वर्ग नीचे की तरह ControlPlane है,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
यहां जादू आता है क्योंकि आप अपने नए AirPlane
प्रकार के उदाहरण बना सकते हैं जितना आप चाहते हैं और आप ControlPlane
कक्षा के कोड को नहीं बदल रहे हैं ।
आप एक उदाहरण जोड़ सकते हैं ...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
आप पहले से निर्मित प्रकारों के उदाहरण भी निकाल सकते हैं।