Я новичок в идее паттерна DI и у меня есть некоторые базовые сомнения в дизайне.
Я использую блоки приложений Unity 2.0 в качестве моей DI-фреймворка.
На вопросы:
- Скажем, у меня есть интерфейс для устройств HW с именем IDevice.
И какой-то HW слушатель, который получает такой IDevice.
Теперь предположим, что у вас есть несколько устройств HW, которые реализуют 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, которая его поддерживает.
Adiel.