【发布时间】:2011-08-25 17:45:53
【问题描述】:
我正在构建的解决方案中的数据存储是数据库、队列和 Csv 文件。
其中一些功能在它们中是通用的,例如CSV 文件和 DB 都具有 GetNames() 方法 - 名称信息位于 CSV 和 DB 中,其中某些方法仅对 DB 有效,对 CSV 无效,例如 GetAddressOfPerson(Person person) 是一种适用于 DB 的方法,因为 DB 包含地址信息,但不适用于 CSV 文件,因为它们没有地址信息。
另一个例子是属性。一些属性是常见的,例如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>
}
队列道:
List<Address> GetPersonAddress(Person person)
{
throw new NotImplementedException();
}
我不确定这是否正确,因为有很多方法没有实现异常。我不确定为此解决方案创建数据层的最佳方法是什么?
【问题讨论】:
标签: c# .net architecture