ধরুন আমি এর IFolderRepository
মতো পদ্ধতিগুলির সাথে ইন্টারফেস তৈরি করেছি :
IEnumerable<Folder> GetAllFolders();
Folder GetFolderWithId(int id);
void AddFolder(Folder newFolder);
void ModifyFolder(Folder folderToModify, Folder folderAfterModification);
void RemoveFolder(Folder folderToRemove);
এবং আমি বাস্তবায়ন করেছি DatabaseFolderRepository
এবং বলি CacheFolderRepositoryDecorator
। এখন 'কয়েকশ লাইন পরে' আমি স্কাইড্রাইভ ফোল্ডারগুলির কার্যকারিতা যুক্ত করতে চাই তাই আমি যুক্ত করতে প্রস্তুত SkyDriveFolderRepository
। দুর্ভাগ্যবশত যখন DatabaseFolderRepository
ব্যবহৃত বাস্তবায়ন সমলয় পদ্ধতি ডাটাবেসের সাথে কথা বলার, স্কাইড্রাইভ এক অনেকটা ব্যবহার async
এবং await
। এমন ক্ষেত্রে কী করবেন? অকার্যকর পদ্ধতির ক্ষেত্রে এটি চিহ্নিত করে অ্যাসিঙ্ক কোনও সমাধান নয় (ব্যতিক্রম হ্যান্ডলিংয়ের প্রয়োজন)। ফিরতে Task<T>
কি আমার ইন্টারফেস পরিবর্তন করা উচিত ? নিশ্চিত যে এটি উপরের উদাহরণে কাজ করবে তবে তারা কেবলমাত্র 2 ইন্টারফেস বাস্তবায়ন ক্লাস। অথবা আমার বেশিরভাগ ইন্টারফেসের Task
রিটার্ন টাইপ থাকা উচিত (আপনার বিপরীতে এটি নিয়মের দরকার নেই)?
IFolder
ইন্টারফেস থাকে তবে আপনি কেন আপনারFolder
সমস্ত পদ্ধতিতে কংক্রিটের প্রয়োগের উপর নির্ভর করেন ?