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フォルダーの機能を追加したいので、追加しSkyDriveFolderRepository
ます。残念ながら、DatabaseFolderRepository
実装はデータベースと通信するために同期メソッドを使用していましたが、skydrive 1では多くのasync
およびを使用していますawait
。そのような場合はどうしますか?voidメソッドで非同期とマークされている場合は、解決策ではありません(例外処理が必要)。インターフェースを変更して返す必要がありますTask<T>
か?確かに上記の例では機能しますが、これらは2つのインターフェース実装クラスにすぎません。それとも、ほとんどのインターフェイスにTask
戻り値の型があるべきですか(規則を必要としないので)。
IFolder
インターフェースがある場合、なぜFolder
すべてのメソッドで具体的な実装()に依存するのですか?