宝马(BMW)工厂制造宝马汽车,奔驰(Benz)工厂制造奔驰汽车。使用工厂方法模式模拟该场景,绘制相应的类图并使用Java语言编程模拟实现。20软2
类图如下
代码如下
第一步,定义一个抽象类Car(抽象产品角色)
public abstract class Car
{
public void run() {}
}
第二步,定义Car的具体实现类(具体产品角色)
具体产品角色Benz:
public class Benz extends Car
{
public void run()
{
System.out.println("我是一辆奔驰车");
}
}
具体产品角色BMW:
public class BMW extends Car
{
public void run()
{
System.out.println("我是一辆宝马车");
}
}
第三步,定义一个抽象类CarFactory(抽象工厂角色)
public abstract class CarFactory
{
public void run()
{
Car car = this.produceCar();
car.run();
}
public abstract Car produceCar();
}
第四步,定义CarFactory的具体实现类(具体工厂角色)
具体工厂角色BenzFactory:
public class BenzFactory extends CarFactory
{
public Car produceCar()
{
Car car =new Benz();
return car;
}
}
具体工厂角色BMWFactory:
public class BMWFactory extends CarFactory
{
public Car produceCar()
{
Car car =new BMW();
return car;
}
}
第五步,定义测试类Client
import java.util.Scanner;
public class Client
{
public static CarFactory fac1,fac2;
public static Car car1,car2;
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
fac1 = new BenzFactory();
fac2 = new BMWFactory();
car1 = fac1.produceCar();
car2 = fac2.produceCar();
while(true)
{
System.out.println("请输入您的选择(输入”1“:生产奔驰车,输入”2“:生产宝马车)");
int i=sc.nextInt();
if(i==1){
car1.run(); }
else if(i==2){
car2.run();}
else {
System.out.println("您的输入有误,请按照提示输入!");}
}
}
}
测试结果如下