Недавно я узнал о DI-фреймворках Guice и Ninject и захотел использовать их в некоторых своих новых проектах.
Хотя я знаком с общими концепциями внедрения зависимостей и знаю, как использовать эти платформы для построения графов объектов, мне трудно применять IoC, когда речь идет о динамическомповедении приложения.
Рассмотрим следующий пример:
Хотя представление главного окна легко связать с Presenter/ViewModel, а затем связать это с логикой предметной области, я не понимаю, как чисто(в смысле IoC) достичь следующие задачи:
IGreenBoxView
, IRedImageView
<-- JConcreteGreenBoxView
, JConcreteRedImageView
) без использования какого-либо шаблона локатора сервисов (например, повторный запрос от IoC)
JOptionPane
во время выполненияЯ видел некоторые решения, использующие абстрактные фабрики, но, честно говоря, не до конца их понимал. Кажется, что такое решение привело бы к тому, что некоторые внутренние типы (домены просмотра, домены презентаторов, ...) были бы доступны для корня конструкции и, таким образом, для всего мира.
Итак, как правильно сделать?