ধরুন আমি এর 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সমস্ত পদ্ধতিতে কংক্রিটের প্রয়োগের উপর নির্ভর করেন ?