首页 > 其他分享 >软件设计:实验 23:策略模式

软件设计:实验 23:策略模式

时间:2024-12-03 09:00:59浏览次数:5  
标签:旅行 23 软件设计 void Strategy 实验 context strategy public

实验 23:策略模式

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

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

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

 

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

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

实验要求:

1. 画出对应的类图;

2. 提交源代码;

3. 注意编程规范。

1.

 

2.// 策略接口

public interface Strategy {

    void algorithm();

}

 

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

public class ConcreteStrategyA implements Strategy {

    @Override

    public void algorithm() {

        System.out.println("选择乘坐飞机旅行");

    }

}

 

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

public class ConcreteStrategyB implements Strategy {

    @Override

    public void algorithm() {

        System.out.println("选择乘火车旅行");

    }

}

 

// 具体策略C:自行车游

public class ConcreteStrategyC implements Strategy {

    @Override

    public void algorithm() {

        System.out.println("选择自行车游");

    }

}

 

// 上下文

public class Context {

    private Strategy strategy;

 

    public void setStrategy(Strategy strategy) {

        this.strategy = strategy;

    }

 

    public void executeStrategy() {

        strategy.algorithm();

    }

}

 

// 客户端

public class Client {

    public static void main(String[] args) {

        Context context = new Context();

 

        // 选择乘坐飞机旅行

        context.setStrategy(new ConcreteStrategyA());

        context.executeStrategy();

 

        // 选择乘火车旅行

        context.setStrategy(new ConcreteStrategyB());

        context.executeStrategy();

 

        // 选择自行车游

        context.setStrategy(new ConcreteStrategyC());

        context.executeStrategy();

    }

}

标签:旅行,23,软件设计,void,Strategy,实验,context,strategy,public
From: https://www.cnblogs.com/xuan-2004/p/18583265

相关文章

  • YOLOv11模型在K230开发板部署过程记录
           当您看到这篇文章时想必您已经完成了模型训练,这里以YOLOv11训练出来的pt模型为例给出模型在K230开发板的部署流程环境:windows11,ubuntu20.04(已安装python,pip),nncase2.9.0,K230开发板1、模型转换        将pt格式转化为onnx格式以便使用nncase工具链进行......
  • 236.二叉树的最近公共祖先
    题目:给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”示例1:输入:root=[3,5,1,6,2,0,8,......
  • 实验5
    task3:1#pragma23#include<iostream>4#include<string>56usingnamespacestd;78classMachinePets{9public:10MachinePets(conststring&s="");11public:12stringget_nickname()con......
  • 实验5 继承和多态
    实验任务3pets.hpp1#ifndefPETS_HPP2#definePETS_HPP3#include<string>456classMachinePets{7public:8MachinePets(conststd::strings);9virtualstd::stringtalk()=0;10std::stringget_nickname()const;11......
  • 实验5
    pets.hpp#include<iostream>#include<vector>#include<string>usingnamespacestd;usingstd::string;classMachinePets{protected:stringnickname;public:MachinePets(conststrings):nickname{s}{}......
  • 实验五
    task3:pets.hpp#pragmaonce#include<iostream>usingnamespacestd;classMachinePets{public:MachinePets(conststring&s):nickname{s}{}virtualstringtalk()const=0;stringget_nickname()const{returnnickname......
  • 软件设计:实验 22:状态模式
    实验 22:状态模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解状态模式的动机,掌握该模式的结构;2、能够利用状态模式解决实际问题。 [实验任务一]:银行账户用Java代码模拟实现课堂上的“银行账户”的实例,要求编写客户端测试代码模拟用户存款和取款,注意账......
  • 实验5 继承和多态
    实验任务3实验代码:1#pragmaonce2#include<iostream>3#include<string>45classMachinePets{6public:7MachinePets(conststd::string&s);8std::stringget_nickname()const;9virtualstd::stringtalk()=0;10......
  • 实验5 C++
    任务三:pets.hpp1#pragmaonce2#include<iostream>3#include<string>45usingnamespacestd;67classMachinePets{8private:9stringnickname;10public:11MachinePets(conststrings):nickname{s}{}12stringge......
  • 实验5
    task1publisher.hpp#pragmaonce#include<iostream>#include<string>usingstd::cout;usingstd::endl;usingstd::string;//发行/出版物类:Publisher(抽象类)classPublisher{public:Publisher(conststring&s="");......