Vue.js: лучший способ реализовать MPA (многостраничное приложение) в laravel

В скомпилированных языках разница является абсолютной.

Java:

//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);

В первом примере компилятор может делать всевозможные аккуратные вещи во время компиляции. Во-вторых, вам просто нужно надеяться, что тот, кто использует метод, делает это ответственно. (Разумеется, новые JVM поддерживают структуру Class<? extends Foo> klass, которая может значительно снизить этот риск.)

Еще одно преимущество заключается в том, что IDE могут ссылаться на определение класса, поскольку оно объявлено именно в этом методе. Вызов create_something (Foo) может быть very удален от определения метода, и если вы посмотрите на определение метода, было бы неплохо увидеть реализацию.

Главным преимуществом позднего связывания является то, что он упрощает такие функции, как инверсия управления, а также некоторые другие применения полиморфизма и утиного набора текста (если ваш язык поддерживает такие вещи).

17
задан Gammer 15 January 2018 в 18:07
поделиться