策略模式

实验 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. 注意编程规范。

 

 

posted @ 2024-12-30 22:36  chrisrmas、  阅读(7)  评论(0)    收藏  举报