给出不遵循依赖倒置原则设计原则和遵循依赖倒置原则设计原则的代码对比,并提供详细注释
时间: 2024-04-29 11:23:21 浏览: 169
不遵循依赖倒置原则设计原则的代码:
```java
public class Driver {
private Car car;
public Driver() {
this.car = new Car();
}
public void drive() {
car.start();
}
}
public class Car {
public void start() {
System.out.println("Car starts.");
}
}
```
在这个例子中,`Driver` 类依赖于 `Car` 类。`Driver` 类直接创建了 `Car` 对象,并在 `drive()` 方法中调用了 `car.start()` 方法。这违反了依赖倒置原则,因为高层模块(`Driver` 类)依赖于低层模块(`Car` 类)。
遵循依赖倒置原则设计原则的代码:
```java
public interface Vehicle {
void start();
}
public class Driver {
private Vehicle vehicle;
public Driver(Vehicle vehicle) {
this.vehicle = vehicle;
}
public void drive() {
vehicle.start();
}
}
public class Car implements Vehicle {
public void start() {
System.out.println("Car starts.");
}
}
```
在这个例子中,`Driver` 类不再依赖于 `Car` 类,而是依赖于 `Vehicle` 接口。`Driver` 类的构造函数接受一个 `Vehicle` 实例,这意味着它可以接受任何实现 `Vehicle` 接口的类的实例。在 `drive()` 方法中,它调用了 `vehicle.start()` 方法,而不是直接调用 `Car` 类的方法。这符合依赖倒置原则,因为高层模块(`Driver` 类)不再依赖于低层模块(`Car` 类),而是依赖于抽象(`Vehicle` 接口)。
阅读全文