สมมติว่าฉันได้สร้างส่วนต่อประสานที่IFolderRepositoryมีวิธีการดังนี้:
IEnumerable<Folder> GetAllFolders();
Folder GetFolderWithId(int id);
void AddFolder(Folder newFolder);
void ModifyFolder(Folder folderToModify, Folder folderAfterModification);
void RemoveFolder(Folder folderToRemove);
และฉันได้ดำเนินการและช่วยให้พูดDatabaseFolderRepository CacheFolderRepositoryDecoratorตอนนี้หลายร้อยสายต่อมา 'ผมอยากจะเพิ่ม SkyDrive โฟลเดอร์ functionallity SkyDriveFolderRepositoryดังนั้นฉันพร้อมที่จะเพิ่ม แต่น่าเสียดายที่ในขณะที่DatabaseFolderRepositoryการดำเนินการใช้วิธีการซิงโครที่จะพูดคุยกับฐานข้อมูล, SkyDrive หนึ่งใช้จำนวนมากและasync awaitจะทำอย่างไรในกรณีเช่นนี้? ในกรณีที่วิธีการทำเครื่องหมายเป็นโมฆะทำเครื่องหมายว่า async ไม่ใช่วิธีการแก้ปัญหา (จำเป็นต้องยกเว้นการจัดการ) ฉันควรเปลี่ยนอินเทอร์เฟซเพื่อส่งคืนTask<T>หรือไม่ แน่ใจว่ามันจะทำงานในตัวอย่างข้างต้น แต่พวกเขาเป็นเพียง 2 ชั้นเรียนการใช้งานอินเตอร์เฟซ หรืออินเทอร์เฟซส่วนใหญ่ของฉันควรมีTaskประเภทการส่งคืน (คุณไม่ต้องการกฎ)
IFolderส่วนต่อประสานทำไมคุณต้องพึ่งพาการใช้งานที่เป็นรูปธรรม (Folder) ในทุกวิธีของคุณ?