Как применить внедрение зависимости в системе управления запасами

Я хочу внедрить систему управления продажами и запасами, я не совсем понимаю, как применять внедрение зависимости в системе. Я хочу иметь класс инвентаризации, который использует базу данных для сохранения своих данных, если у меня есть класс, который обрабатывает соединение с базой данных, скажем DBConnectionManager, затем слой базы данных DBWrapper, который использует DBConnectionManager и взаимодействует с БД, а затем действует как абстрактный слой между БД и классы, которые используют БД, такие как Inventory, Users, Customers, Sales. Или я должен написать sql коды в каждом User, Customer, .... Class.

2 ответа

Решение

Вы пробовали шаблон репозитория?

Замечательно использовать с DI, вы создаете корневой класс, который содержит соединения и основные операции, такие как обновление, удаление и т. Д...

А затем расширить этот класс, чтобы создать более конкретные поведения с более значимыми именами...

Вот ссылка на это

http://nhibernate.hibernatingrhinos.com/27/the-repository-pattern

ИМО, у вас должен быть интерфейс DAO, созданный для ваших операций / операций с БД. Этот интерфейс DAO будет иметь общие операции для хранения / извлечения данных. Затем вы можете иметь классы для реализации этого интерфейса DAO; один класс включил бы сохранение базы данных, один класс включил бы сохранение на основе текстового файла (в случае необходимости) и т. д.

Ваша реализация базы данных DAO в свою очередь будет иметь java.sql.Connection ссылка, которая позволит ему подключиться к базе данных. Вы будете использовать механизм зависимостей (например, Spring или Guice) для внедрения соответствующих экземпляров во время выполнения как для интерфейсов DAO, так и для объектов подключения.

По сути, научитесь мыслить с точки зрения интерфейсов и отдавать предпочтение композиции, а не наследованию (и не уклоняться от использования наследования, чтобы избежать дублирования кода; просто убедитесь, что суперкласс не является частью контракта или не раскрывается во внешний мир. Я лично нашел Google Guice docs хорошим источником того, как начать думать в терминах модулей (в контексте внедрения зависимостей).

Другие вопросы по тегам