Я немного смущен различиями принципа инверсии SOLID и контейнеров IOC. Должен ли быть только один класс, ответственный за подключение всех зависимостей? Я не хочу использовать контейнер IOC для черных ящиков и сам прокладываю эти вещи. Я не хочу отвлекаться вначале, создавая собственный супер общий. Hardwiring в одном месте или классе будет просто отлично. Я также не хочу использовать любые @Inject или @Autowired и т. Д. Это просто скрывает сочные детали.Понимание принципа инверсии зависимостей и создание жесткого контейнера IOC для собственной разработки для инъекций зависимостей без @Inject или @Autowired
Я хочу понять, как я мог бы связывать зависимости в одном месте (класс или некоторый файл свойств) и иметь остальная часть системы не связана с конкретными реализациями. Я подхожу к этому, чтобы лучше понять, как работает инверсия зависимостей и как она связана с инъекцией зависимостей.
Итак, как я могу подключить интерфейс EmployeeDAO для сохранения и удаления сотрудников в базе данных или в файловой системе или в хранилище данных nosql? Я буду благодарен за любые примеры для этого использования.
Заранее благодарен.
Не мое намерение тратить время на создание контейнера. Я просто хочу понять, есть ли у меня один класс, содержащий все = новый Blabla(). –
Если вы хотите следовать практике, которую люди используют для контейнеров, то да, у вас будет одно место в точке входа вашего приложения с гигантским «новым инструктором MyClass()», который создает экземпляр вашего корневого объекта и всего графика зависимостей , Я бы рекомендовал вам принять более прагматичный подход и создать экземпляр этих графиков объектов, где он имеет наибольший смысл (и по-прежнему поддерживает свободную связь и проверяемость). –
Я думаю, что вы запутываете ассоциацию конкретных типов с интерфейсами и инстанцированием. У вас не будет очень полезной программы, если вам нужно создать экземпляр каждого объекта в начале программы. – weston