Хранилищами данных в решении, которое я проектирую, являются базы данных, очереди и файлы CSV.
Некоторые функции являются общими для обоих файлов, например, для файлов CSV и для обеих баз данных, имеют метод GetNames () - namesИнформация хранится в 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>
}
QueueDao:
List<Address> GetPersonAddress(Person person)
{
throw new NotImplementedException();
}
Я не уверен, что это правильно, потому что есть много методов, которые не реализовали исключение.Я не уверен, каким должен быть лучший способ создания слоя данных для этого решения?