24.12.17

实验 23:策略模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解策略模式的动机,掌握该模式的结构;

2、能够利用策略模式解决实际问题。

[实验任务一]:旅行方式的选择

旅游的出行方式有乘坐飞机旅行、乘火车旅行和自行车游,不同的旅游方式有不同的实现过程,客户可以根据自己的需要选择一种合适的旅行方式。

实验要求:

1.  画出对应的类图;

2.  提交源代码;

3.  注意编程规范。

 

  1. 类图

 

 

  1. 源代码

// 抽象策略:旅游方式

interface TravelStrategy {

    void travel();

}

 

// 具体策略:乘飞机旅行

class AirTravel implements TravelStrategy {

    @Override

    public void travel() {

        System.out.println("乘坐飞机旅行:快速到达目的地!");

    }

}

 

// 具体策略:乘火车旅行

class TrainTravel implements TravelStrategy {

    @Override

    public void travel() {

        System.out.println("乘坐火车旅行:沿途欣赏风景!");

    }

}

 

// 具体策略:骑自行车旅行

class BikeTravel implements TravelStrategy {

    @Override

    public void travel() {

        System.out.println("骑自行车旅行:享受健康和自由!");

    }

}

 

// 上下文类:旅行上下文

class TravelContext {

    private TravelStrategy strategy; // 持有当前选择的策略

 

    public void setStrategy(TravelStrategy strategy) {

        this.strategy = strategy; // 动态切换策略

    }

 

    public void executeStrategy() {

        if (strategy != null) {

            strategy.travel(); // 执行当前策略

        } else {

            System.out.println("请先选择一种旅行方式!");

        }

    }

}

 

// 测试类

public class Client {

    public static void main(String[] args) {

        TravelContext context = new TravelContext();

 

        // 选择乘飞机旅行

        System.out.println("客户选择:飞机旅行");

        context.setStrategy(new AirTravel());

        context.executeStrategy();

 

        // 选择乘火车旅行

        System.out.println("\n客户选择:火车旅行");

        context.setStrategy(new TrainTravel());

        context.executeStrategy();

 

        // 选择骑自行车旅行

        System.out.println("\n客户选择:自行车旅行");

        context.setStrategy(new BikeTravel());

        context.executeStrategy();

 

        // 未选择旅行方式

        System.out.println("\n客户未选择旅行方式");

        context.setStrategy(null);

        context.executeStrategy();

    }

}

posted on 2024-12-17 19:18  Daniel350  阅读(1)  评论(0编辑  收藏  举报