Что касается инъекции зависимостей

interface Car {
 public void tyres();
}

class BMW implements Car {
 public void tyres() {
 System.out.println("BMW");
 }
}

class HMW implements Car {
 public void tyres() {
 System.out.println("HMW");
 }
}

public class ******************* {
private Car car;

 public void draw() {
 this.car.tyres();
 }

 public void setCar(Car car) {
 this.car = car;
 }

 public static void tyres1(Car c) {
 c.tyres();
 }

 public static void main(String[] args) {
 Car car = new BMW();
 tyres1(car);//point 1
 ******************* dep=new *******************();
 dep.setCar(car);//point2
 dep.draw();
 }
}

Я хочу кое-что уточнить, что является преимуществом, которое мы создаем для инъекции зависимостей в точках 1 и 2. Пожалуйста, объясните мне подробно, поскольку я новичок в весне???

2 ответа

Это не особый принцип дизайна Spring, и вам трудно понять, какой фрагмент вы предоставили, который не имеет заметных разделенных частей, но становится более полезным по мере роста систем.

Удалив ссылку на конкретный класс, вы исключаете "тип связи", что означает, что внутренний класс может оставаться "закрытым": он не должен изменяться, если изменения реализации участвующего класса и клиентского кода могут использовать разные способы при необходимости адаптироваться без внутреннего класса, который должен измениться или осознать реализацию. Это также помогает гарантировать, что тело метода внутри класса фокусируется на его роли и конкретной работе, а не запутывается с какой-либо другой реализацией (что помогает четко определять, что следует считать частью API).

Вы также должны прочитать о концепции классов SOLID: http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

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


Фактически то, что Dependency Injection делает эту часть, выполняется вашим кодом:

Car car = new BMW();

Функция Injection Dependency помогает вам указывать зависимость как конфигурацию, а Framework фактически делает остальную инъекцию объекта в ссылки.

licensed under cc by-sa 3.0 with attribution.