สมมติว่าฉันได้สร้างส่วนต่อประสานที่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
) ในทุกวิธีของคุณ?