Насколько я понимаю, клиент (основная программа) должен иметь общий тип, чтобы плагин, другой объект и т. д. могли быть успешно переданы клиенту. Я видел этот ответ на SO здесь,
Что такое внедрение зависимостей?
В Java передача конструктора с использованием предустановленного интерфейса имеет смысл. Из упомянутого вопроса SO,
public SomeClass (MyClass myObject) {
this.myObject = myObject;
}
Насколько я понимаю, MyClass — это тип, определяемый интерфейсом. myObject реализует это, что на самом деле требуется, что позволяет мне передать myObject конструктору.
Так как же работает Dependency Injection на языке утиной печати? Python не имеет интерфейсов. Является ли реализация DI Python такой же, как Java или другие статически типизированные языки, или это «обходной» тип DI для языков сценариев?
type()
илиinstanceof()
для проверки типа, если вам это действительно нужно, и вы можете использовать ABC для явного определения интерфейсов, если хотите. 27.03.2014