Я новичок в идее всего шаблона DI, и у меня есть некоторые основные сомнения в дизайне. я использую блоки приложений Unity 2.0 в качестве своей структуры DI.
На вопросы:
- Скажем, у меня есть интерфейс для аппаратных устройств с именем IDevice. И некий слушатель HW, который получает такой IDevice. Теперь предположим, что у вас есть несколько аппаратных устройств, которые реализуют IDevice и несколько прослушивателей. Вам нужно указать для каждого слушателя, какое конкретное устройство нужно внедрить. Вы не можете просто сопоставить одно устройство с интерфейсом, вам нужно что-то вроде множественного сопоставления.
ну, одно из возможных решений - создать еще один уровень абстракции для каждого реального устройства, например
public interface IActualDevice : IDevice
{}
public ActualDevice : IActualDevice
{}
public SimulatedActualDevice : IActualDevice
{}
public OtherAcualDevice: IOtherAcualDevice
{}
тогда можно было бы создать такое отображение:
container.RegisterType<IActualDevice, ActualDevice>()
или если HW отсутствует:
container.RegisterType<IActualDevice, SimulatedActualDevice>()
так что вы говорите, что это хороший дизайн?
- Шаблон DI дает нам хороший механизм создания объектов.
Как насчет клея, как насчет подписки на события между объектами?
вам не кажется, что он отсутствует или, лучше, мне не хватает какой-то функции Unity, которая его поддерживает.
Адиэль.