Да, вы на правильном пути. Интерфейс - это спецификация, которая позволяет вам работать с «неизвестным» классом, который предоставляет вам нужную услугу, не привязываясь к какой службе (в данном случае к какому типу базы данных) вы используете.
В вашем коде вы продолжите строить на своем интерфейсе что-то вроде:
interface IConnectable {
IConnection Connect();
}
interface IConnection {
IResultSet ExecuteQuery(string query);
}
, а затем реализовать их с конкретными классами. Кроме того, вам нужна фабрика для создания любого класса, который вам нужен:
class ConnectionFactory {
IConnecable CreateConnection(...);
}
это так, что вам не нужно знать, какое соединение создать.
Некоторая помощь уже присутствует в .NET Framework. Существует класс DbConnection с подклассами, такими как SqlConnection, который может помочь. Также существуют фреймворки, которые помогают вам соединяться (создавать классы и связывать их вместе), но это более сложная тема, которую можно попробовать позже - начните с создания собственных интерфейсов и реализации для них - которые будет легче понять .
Хорошее мышление! Удачи!
P.S. Чтобы иметь возможность легко перенастроить свое программное обеспечение для создания различных объектов, реализующих одни и те же интерфейсы (что обычно является гибкостью, которую вы хотите), вы не хотите создавать объекты с использованием конструкторов напрямую, вместо этого есть одно центральное место, где создаются объекты. Это место обычно называют фабрикой (оно создает объекты ...). Фабрика может быть очень простой (может быть, просто посмотреть на строку конфигурации или аргумент командной строки или что-то еще, управляющее вашим поведением) или более продвинутой, когда сложные правила определяют, какие классы следует использовать в различных ситуациях.
Существуют фреймворки, которые предоставляют фабрики разного рода для разных ситуаций, структурная карта ссылка - это одна, а MEF (включена в .NET 4 и доступна по ссылка ) - другая. Но не начинайте с этого, это даст вам слишком много думать сразу - вы можете позже добавить это, учитывая, что вы используете интерфейсы для начала!