帮我写一个控制反转的Java例子
时间: 2023-05-24 20:03:43 浏览: 59
A: 看起来你想了解控制反转,控制反转是一种软件设计模式,它通过将对象实例化的控制过程从应用程序代码中解耦出来,来提高代码的可重用性和可扩展性。下面是一个控制反转的Java例子:
首先,我们定义一个接口 Car,它有一个方法 run:
```
public interface Car {
void run();
}
```
然后,我们定义两个实现了这个接口的类:
```
public class BMW implements Car {
@Override
public void run() {
System.out.println("BMW is running.");
}
}
public class Benz implements Car {
@Override
public void run() {
System.out.println("Benz is running.");
}
}
```
接下来,我们定义一个工厂类 CarFactory,它具有一个 create 方法,用于返回 Car 实例:
```
public class CarFactory {
public static Car create(String carType) {
Car car;
switch(carType) {
case "BMW":
car = new BMW();
break;
case "Benz":
car = new Benz();
break;
default:
throw new IllegalArgumentException("Unsupported car type.");
}
return car;
}
}
```
最后,我们通过使用控制反转来实例化 Car 对象:
```
public class CarRunner {
public static void main(String[] args) {
String carType = "BMW";
Car car = CarFactory.create(carType);
car.run();
}
}
```
以上例子中,我们没有在应用程序代码中直接创建 Car 对象,而是通过使用工厂类 CarFactory 将实例化 Car 对象的过程控制在外部。这种方法提高了代码的可重用性和可扩展性。在修改或添加新车类型时,只需要修改工厂类就可以了。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)