编写Java程序,几个朋友到游乐场游玩,大家投票选择出行方式。使用程序来模拟这一结果。(工厂模式示例Demo)

查看本章节

查看作业目录


需求说明:

几个朋友到游乐场游玩,大家投票选择出行方式。如果选择“A”最多的话,表示选择的交通工具是公交车(Bus);如果选择“B”最多的话,表示选择的交通工具是的士(Taxi);如果选择“C”最多的话,就表示选择的交通工具是地铁(Subway)。请使用程序来模拟这一结果。

实现思路:

(1)项目中创建简单工厂模式中的抽象产品角色,即交通工具类 Vehicle,该类使用abstract 修饰。在Vehicle 类中,声明 double 类型的实例变量 mph,表示交通工具的时速。创建 void getInfo()抽象方法,用于打印交通工具的信息。

(2)创建简单工厂模式中的具体产品角色,分别是公交车类 Bus,地铁类 Subway 和的士类 Taxi,3 个类都需 要继承 Vehicle 类,然后重写getInfo方法,输出具体时速信息。

(3)创建简单工厂模式中的工厂类 VehicleFactory。在该类中,创建共有静态方法 Vehicle chooseVehicle (String mode),该方法实现了选择交通工具的功能。在该方法内,根据 mode 值,返回选择的交通工具对象。

(4)创建测试类 TestVehicleFactory,在该类的 main() 方法中,调用 VehicleFactory 类的静态方法 choose Vehicle(String mode),得到返回的 Vehicle 对象。调用该对象的 getInfo() 方法,打印出该交通工具的信息。

实现代码:

交通工具类 Vehicle

public abstract class Vehicle {
	public abstract void getInfo();
}

公交车类 Bus

public class Bus extends Vehicle {
	public double mph = 25;

	@Override
	public void getInfo() {
		System.out.println("选择的交通工具是:公交车,时速是" + this.mph + "英里/小时");
	}
}

地铁类 Subway

public class Subway extends Vehicle {
	public double mph = 60;

	@Override
	public void getInfo() {
		System.out.println("选择的交通工具是:地铁,时速是" + this.mph + "英里/小时");
	}
}

的士类 Taxi

public class Taxi extends Vehicle {
	public double mph = 35;

	@Override
	public void getInfo() {
		System.out.println("选择的交通工具是:的士,时速是" + this.mph + "英里/小时");
	}
}

工厂类 VehicleFactory

public class VehicleFactory {
	// 工厂类的方法
	public static Vehicle chooseVehicle(String mode) {
		Vehicle vehicle = null;
		// 根据投票结果,选择出行方式
		if ("A".equals(mode)) {
			vehicle = new Bus();
		} else if ("B".equals(mode)) {
			vehicle = new Taxi();
		} else if ("C".equals(mode)) {
			vehicle = new Subway();
		}
		return vehicle;
	}
}

测试类 TestVehicleFactory

public class TestVehicleFactory {
	public static void main(String[] args) {
		Vehicle vehicle = VehicleFactory.chooseVehicle("C");
		vehicle.getInfo();
	}
}

 

posted @ 2020-10-14 19:55  明金同学  阅读(35)  评论(0编辑  收藏  举报