我構建的解決方案中的數據存儲是數據庫,隊列和Csv文件。當某些功能被共享時,設計數據層,多接口或單接口的更好方法是什麼?
其中一些功能在它們兩者中都是常見的,例如, Csv文件和數據庫都有GetNames()方法 - 名稱信息駐留在CSV和DB中,其中一些方法僅適用於DB而不適用於CSV。 GetAddressOfPerson(Person person)是一種可用於DB的方法,因爲DB包含地址信息,但不包含地址信息,因爲它們沒有地址信息。
另一個例子是屬性。一些屬性很常見,例如bool IsTestMode對於兩個DAO都很常見,但有些不是PersonsFilePath
雖然架構,我創建了一個接口:IPersonDao它包含所有的方法和任何類與實現的屬性。
的沈志南實施IPersonCsvDao和IPersonDBDao和IPersonQueueDao實現所有的方法和屬性,然而,他們拋出「未實現例外」,在它們的實現,如果方法不屬於DAO 例如 CsvDao:
List<Address> GetPersonAddress(Person person)
{
throw new NotImplementedException();
}
DBDao:
List<Address> GetPersonAddress(Person person)
{
//connect to db table
//return list<address>
}
QueueDao:
List<Address> GetPersonAddress(Person person)
{
throw new NotImplementedException();
}
我不知道是否因爲有很多方法,這還沒有實現的異常,這是正確的。我不確定應該爲此解決方案創建數據層的最佳方式是什麼?