В чем разница между ранним и поздним связыванием?
В компилируемых языках разница dynamicbinding разительна.
Ява:
//early binding:
public create_a_foo(*args) {
return new Foo(args)
}
my_foo = create_a_foo();
//late binding:
public create_something(Class klass, *args) {
klass.new_instance(args)
}
my_foo = create_something(Foo);
В первом примере bindings компилятор может делать все, что binding угодно, во время компиляции. Во-вторых, вы static-binding просто должны надеяться, что dynamic-binding тот, кто использует метод, делает binding это ответственно. (Конечно, более dynamicbinding новые JVM поддерживают структуру binding Class extends Foo> klass
, что может значительно снизить dynamic-binding этот риск.)
Еще одно преимущество binding заключается в том, что IDE bindings могут напрямую ссылаться bindings на определение класса, поскольку dynamic-binding оно объявлено прямо в методе. Вызов static-binding create_something(Foo) может dynamic-binding быть очень далек от определения bindings метода, и если вы смотрите static-binding на определение метода, было binding бы неплохо увидеть его реализацию.
Основное bindings преимущество позднего связывания static-binding заключается в том, что оно bindings упрощает такие вещи, как static-binding инверсия управления, а также binding некоторые другие способы bindings использования полиморфизма dynamicbinding и утиного ввода (если ваш dynamic-binding язык поддерживает такие вещи).
binding
dynamic-binding
static-binding
В чем разница между ранним и поздним связыванием?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.