मुझे लगता है कि आप लाभ देखने में विफल रहते हैं, यही वह कुंजी है जिसे आप पूरी तरह से बहुरूपता को समझने के लिए गायब हैं। मैं एक उदाहरण बनाने की कोशिश करूंगा:
मान लें कि आपके पास एक सरल सीआरयूडी फॉर्म है। इस सहेजें बटन का कोड है:
var Client = PopulateDTO(); //put all the values in the controls, to an object
if(Action==Actions.Create){
_repository.Create(Client);
}
else if(Action==Actions.Update){
_repository.Update(Client);
}
else if(Action==Actions.Delete){
_repository.Delete(Client);
}
this.Close();
इस कोड काम करता है, लेकिन यह बुरा कोड, और पढ़ने के लिए मुश्किल है।के बहुरूपता (और रणनीति पैटर्न) का उपयोग करते हैं:
public abstract class BaseStrategy{
abstract void Do(ClientDto Client);
}
public class CreateStrategy:BaseStrategy{
public override void Do(ClientDto Client){
_repo.Save(Client);
}
}
public class UpdateStrategy:BaseStrategy{
public override void Do(ClientDto Client){
_repo.Update(Client);
}
}
public class DeleteStrategy:BaseStrategy{
public override void Do(ClientDto Client){
_repo.Delete(Client);
}
}
तो, हम एक अमूर्त वर्ग, और 3 कार्यान्वयन, ग्राहक ऑब्जेक्ट वाले कुछ एक कर दिया है। अब, के रूप में बचाने के लिए बटन के कोड होगा:
BaseStrategy stg = GetCorrectStrategy();
var Client = PopulateDTO();
stg.Do(Client);
this.close;
और विधि GetCorrectStrategy() सही रणनीति कार्यान्वयन का दृष्टांत होगा, उपयोगकर्ता पैदा कर रही है, संपादन या ग्राहक को हटाने अगर निर्भर करता है।
मुझे आशा है कि यह उत्तर आपकी मदद करेगा। लेकिन अगर आपकी मदद नहीं हुई, तो मेरा सुझाव है कि आप रणनीति पैटर्न के बारे में पढ़ते हैं, यह मेरी राय में बहुरूपता का सबसे अच्छा उपयोग है
बेहतर स्टिल क्लीनररूम विधि परिभाषा को 'आईसीलीन' इंटरफ़ेस में रखना होगा और इसे लागू करने वाले मनुष्यों के प्रकारों के लिए लागू करना होगा। फिर आप इन इंसानों को इस इंटरफेस में डालने में सक्षम होने से मुक्त बहुलकवाद प्राप्त करते हैं। – ChristopheD
यह निश्चित रूप से कामुकता का एक उदाहरण है। – juharr
@juharr और agism। – kenny