实验 23:策略模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解策略模式的动机,掌握该模式的结构;
2、能够利用策略模式解决实际问题。
[实验任务一]:旅行方式的选择
旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。
实验要求:
1. 画出对应的类图;
2. 提交源代码;
// 基础类 Travel
abstract class Travel {
public abstract String bookTicket();
public abstract String getDetails();
public static Travel chooseMode(String mode) {
switch (mode.toLowerCase()) {
case "plane":
return new Plane();
case "train":
return new Train();
case "bicycle":
return new Bicycle();
default:
throw new IllegalArgumentException("Invalid travel mode");
}
}
}
// 飞机类 Plane
class Plane extends Travel {
@Override
public String bookTicket() {
return "Ticket booked for the plane.";
}
@Override
public String getDetails() {
return "Flight details: Departure at 10 AM.";
}
}
// 火车类 Train
class Train extends Travel {
@Override
public String bookTicket() {
return "Ticket booked for the train.";
}
@Override
public String getDetails() {
return "Train details: Departure at 9 AM.";
}
}
// 自行车类 Bicycle
class Bicycle extends Travel {
@Override
public String bookTicket() {
return "Bicycle rented.";
}
@Override
public String getDetails() {
return "Bicycle details: Mountain bike.";
}
}
// 主类
public class TravelApp {
public static void main(String[] args) {
String travelChoice = "plane"; // 或者 "train" 或 "bicycle"
try {
Travel travel = Travel.chooseMode(travelChoice);
System.out.println(travel.bookTicket());
System.out.println(travel.getDetails());
} catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
}
}
3. 注意编程规范。