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