Зачем концептуально нужны интерфейсы?
Когда одну реализацию можно заменить на другую реализацию.
> И если я пишу класс для менеджера базы данных (mySQL) в своем инет-магазине, то стоит ли мне все сигнатуры вынести в интерфейс, если позже планируется миграция с mySQL на MSSQL?
Если это получается довольно просто, то стоит.
> И где при этом оставить стринговые константы SQL-запросов, в классе, имплементирующем интерфейс или вынести в сам интерфейс?
Смотря где проходит линия интерфейса.
> И где при этом оставить стринговые константы SQL-запросов, в классе, имплементирующем интерфейс или вынести в сам интерфейс?
Смотря где проходит линия интерфейса.
не совсем так. Интерфейс - это набор сигнатур функций. Если он еще включает какие-то данные или логику, то это уже не интерфейс, а абстрактный класс.
В общем, ничего не мешает сделать (высокоуровневый) интерфейс "менеджера данных", реализующий его абстрактный класс "менеждер данных СУБД" и производные от него классы настроенные уже непосредственно на MSSQL или MySQL
Если данные запихать в enum или константы - то тогда можно это будет назвать интерфейсом?
В Яве интерфейс вполне может содержать static final поля.
Поэтому, похоже, надо SQL-запросы выносить в класс.
перечисляемый тип - это само по себе, набор констант (кстати, фактически - тоже перечисляемый тип) - само по себе. Интерфейс, конечно, может от них зависить (например, параметр метода - перечисляемого типа, или одна из констант но содержать не может.

Если же заниматься философским вопросом, что следует называть интерфейсом, то мое мнение -- практически что угодно. Понятие интерфейса даже к ООП не имеет отношения. Написал 3 прототипа в С-шный header вот тебе и интерфейс. Формат BMP файла -- это тоже в некотором смысле интерфейс.
Что если рассматривать интерфейс, как логическую сущность, то в этом случае, в интерфейсе может быть все что угодно
если позже планируется миграция с mySQL на MSSQL?
Программирование - не то место, где можно "подстелись соломку" даже зная где упадешь.


Итого. Стоит ли задумываться о предстоящем переходе на MSSQL при программировании реализации под mySQL?- да. Но провести удачный разрез - это не формальная деятельность, а весьма интеллектуальная и творческая, так что
стоит ли мне все сигнатуры вынести в интерфейс
совсем не отражает сути этой деятельности. А уж
где при этом оставить стринговые константы SQL-запросовэто совсем мелочи.

Спасибо за внимание.
Перепиши все вункции для работы с базой как отдельный надор или клас... Потом просто заменишь внутри своих функций стандартные функции для MySQL на msSQL..
Оставить комментарий
stm7481822
В каком случае следует концептуально использовать интерфейсы?И если я пишу класс для менеджера базы данных (mySQL) в своем инет-магазине, то стоит ли мне все сигнатуры вынести в интерфейс, если позже планируется миграция с mySQL на MSSQL?
И где при этом оставить стринговые константы SQL-запросов, в классе, имплементирующем интерфейс или вынести в сам интерфейс? Насколько я знаю, некоторые запросы для mySQL и MSSQL могут отличаться.