মনে করুন আমি একটি বিদ্যমান, যুক্তিসঙ্গত বৃহত সিস্টেমে কাজ করছি। আমার myObjectক্লাসের একটি বিষয় রয়েছে MyClass(উদাহরণস্বরূপ, ধরুন আমি জাভাতে কাজ করছি)। myObjectএকটি Collection, বলুন, একটি Listএবং অন্যান্য অবজেক্টগুলি সমন্বিত এমন একটি রচনা যা (আমার মনে হয়) অপ্রাসঙ্গিক। এটিতে ডেলিগেট পদ্ধতি রয়েছে যা কেবল এটি তৈরি করা হয়েছে এমন পদ্ধতিগুলির প্রতি আহ্বান জানাতে পরিবেশন করে Listযাতে Listএটি প্রকাশিত হয় নি তা নিশ্চিত করার জন্য (দুঃখিত যদি আমি আমার পরিভাষাটি ভুল করে ফেলেছি)।
ধরা যাক Listএটি একটি List<String>তবে কোনও কারণে, প্রধান অ্যাক্সেস পদ্ধতিটি শ্রেণীর জন্য একটি মুখোশ পদ্ধতি SomeOtherClass। আমি যদি আমার মধ্যে একটি নতুন মান জুড়ি wantedোকাতে চাইতাম Listতবে আমার কাছে একটি অবজেক্ট SomeOtherClassবলে মনে হবে someObject। আমি কল করব myObject.insert(someObject)এবং insertপদ্ধতির অভ্যন্তরে এমন কিছু জাদু থাকবে যা এটিতে একটি পুনরুদ্ধার Stringকরবে List<String>।
মনে করুন এখনই আমি কেবল একটি Stringমান পেয়েছি এবং SomeOtherClassobjectোকানোর জন্য কোনও বস্তু নেই । ধরে নিচ্ছি আমি insertপদ্ধতিটি সংশোধন করতে পারছি না কারণ এটি এই সিস্টেমে সমস্ত কিছু ভেঙে ফেলবে। তাহলে আমি কি insertপদ্ধতিটি ওভারলোড করব ? নাকি আমি একটি নতুন বস্তু তৈরি করা উচিত SomeOtherClassপ্রত্যেক সময় আমি কল করতে চান insert?
আমার ধারণা আমি যদি এটি ওভারলোড না করে থাকি তবে এটি এমন কিছু দেখাচ্ছে ...
public void insert(String s) {
...
}
public void insert(SomeOtherObject obj) {
this.insert(obj.magicStringMethod());
}
(এই উদাহরণটি গতকাল ওভারলোডিং সম্পর্কে যে একইরকম (কিছুটা জটিল) পরিস্থিতি তৈরি হয়েছিল তার ভিত্তিতে একটি স্বতন্ত্র ধাঁধা।
কোনও পদ্ধতির ওভারলোডের জন্য এটি কি উপযুক্ত জায়গা হবে? যদি তা না হয় তবে আমি কখন কোনও পদ্ধতি ওভারলোড করব?
magicStringMethod()আমার উদাহরণে, আমার ক্ষেত্রে, একটি ডোমেন অবজেক্টের একটি Stringপ্রতিনিধিত্ব প্রাপ্ত হবে SomeOtherObject।