Я делаю небольшой проект упражнений, чтобы больше практиковаться в программировании в целом.Проект представляет собой программу, которая берет содержимое файла CSV и помещает его в некоторую базу данных.Я начал с создания интерфейса доступа к базе данных IDatabaseClient
, что заставило меня задуматься о нескольких вещах:
- Как должен выглядеть мой метод
Connect(...)
?Различные базы данных могут иметь различный набор учетных данных, необходимых для подключения, т. Е. Одной может потребоваться строка соединения, другой может потребоваться: URL, имя пользователя, пароль и т. Д. Одним из способов решения этой проблемы может быть использование метода Connect
, подобного этому:
Task Connect (учетные данные IConnectionCredentials);
IConnectionCredentials
интерфейс будет пустым, и каждая база данных будет иметь свою собственную реализацию, например, так:
public class DatabaseNo1Credentials : IConnectionCredentials
{
public Uri Uri { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
Что мне не нравится в таком решении, так это то, что пользователь реализации IDatabaseClient
не имеет никакой информации о том, какой класс учетных данных следует использовать.Код выдаст исключение, если указан неверный класс учетных данных.Есть ли лучшее решение?
Мои файлы CSV могут содержать данные для разных таблиц базы данных.Один CSV может содержать данные об автомобилях, другой может содержать данные о людях и т. Д. Как сделать мои данные
IDatabaseClient
пригодными для использования многими детьми?
Я мог бы сделать это:
public interface IDatabaseClient
{
Task Connect(IConnectionCredentials credentials);
Task WriteCars(string model, int productionYear);
Task WritePeople(string firstName, string lastName, int age);
}
Однако, что если однажды я захочу записать данные в таблицу телефонов или любую другую таблицу?