IMO, у вас должен быть интерфейс DAO , созданный для ваших операций / операций с БД. Этот интерфейс DAO будет иметь общие операции для хранения / извлечения данных. Затем вы можете иметь классы для реализации этого интерфейса DAO; один класс включил бы сохранение базы данных, один класс включил бы сохранение на основе текстового файла (в случае необходимости) и т. д.
Ваша реализация базы данных DAO, в свою очередь, будет иметь ссылку java.sql.Connection
, которая позволит ему подключаться к базе данных. Вы будете использовать механизм зависимостей (например, Spring или Guice) для внедрения соответствующих экземпляров во время выполнения как для интерфейсов DAO, так и для объектов подключения.
В основном, учитесь думать с точки зрения интерфейсов и предпочитайте композицию наследованию (и не избегайте использования наследования, чтобы избежать дублирования кода; просто убедитесь, что суперкласс не является частью контракта или не знакомы с внешним миром. Я лично нашел Документы Google Guice хорошим источником того, как начать думать в терминах модулей (в контексте внедрения зависимостей).