宝马(BMW)工厂制造宝马汽车,奔驰(BENZ)工厂制造奔驰汽车,奥迪(AUDI)工厂制造奥迪汽车。使用工厂方法模式模拟该场景,要求绘制相应的类图并用Java 语言写出关键代码
时间: 2024-11-09 13:23:35 浏览: 21
实际成功案例德国宝马BMW汽车-西门子数字化工厂
工厂方法模式是一种创建型设计模式,它将对象的创建过程封装到一个单独的抽象工厂类中,避免了对具体产品类的直接实例化,这样做的好处是可以方便地更换不同的产品系列而不影响客户端代码。
首先,我们需要定义一个抽象车厂(CarFactory)作为产品的共同接口:
```java
// 抽象车厂接口
public interface CarFactory {
Car createCar();
}
```
然后,分别创建BMW、奔驰和奥迪的工厂类,它们各自实现了createCar()方法来生产对应的车辆:
```java
// BMW工厂
public class BMWFactory implements CarFactory {
@Override
public Car createCar() {
return new BMW();
}
}
// 奔驰工厂
public class BenzFactory implements CarFactory {
@Override
public Car createCar() {
return new Mercedes();
}
}
// 奥迪工厂
public class AudiFactory implements CarFactory {
@Override
public Car createCar() {
return new Audi();
}
}
```
接下来,我们定义一个通用的汽车接口(Car)和具体的汽车类:
```java
// 汽车接口
public interface Car {
void drive();
}
// 具体的汽车类
public class BMW extends Car {
@Override
public void drive() {
System.out.println("驾驶宝马");
}
}
public class Mercedes extends Car {
@Override
public void drive() {
System.out.println("驾驶奔驰");
}
}
public class Audi extends Car {
@Override
public void drive() {
System.out.println("驾驶奥迪");
}
}
```
最后,在客户端代码中,通过工厂方法动态选择并创建特定品牌的汽车:
```java
public static void main(String[] args) {
CarFactory carFactory = getCarFactory("BMW"); // 根据需求获取对应工厂
Car car = carFactory.createCar(); // 创建具体车型
car.drive(); // 驾驶汽车
}
public static CarFactory getCarFactory(String brand) {
switch (brand) {
case "BMW":
return new BMWFactory();
case "BENZ":
return new BenzFactory();
case "AUDI":
return new AudiFactory();
default:
throw new IllegalArgumentException("Invalid brand");
}
}
```
这个例子展示了如何使用工厂方法模式来模拟不同汽车品牌的生产过程,使得客户端无需关心具体车辆是如何构造的。
阅读全文