Я новичок в Spring и в настоящее время изучаю его на платных курсах. Я столкнулся с концепцией слабой связи и понимаю, что Spring способствует определению поведения в интерфейсах. Однако мне интересно, почему необходимо определять поведение в интерфейсе, а не напрямую расширять реализацию в классе?
Например, вместо:
Код: Выделить всё
public class Car extends PetrolEngine {
// implementation
}
Почему рекомендуется определять интерфейс следующим образом:
Код: Выделить всё
public interface Engine {
void start();
}
public class PetrolEngine implements Engine {
public void start() {
// implementation
}
}
public class Car {
private Engine engine;
public Car(Engine engine) {
this.engine = engine;
}
}
Каковы преимущества использования интерфейсов в этом контексте и как это помогает при слабой связи в Spring?
Подробнее здесь:
https://stackoverflow.com/questions/790 ... role-of-di