首页 > 其他分享 >23.策略模式

23.策略模式

时间:2022-11-10 16:15:46浏览次数:45  
标签:策略 23 travel TravelStrategy 模式 strategy class void public

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

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

代码

Java

package test23;

public class AirplaneStrategy implements TravelStrategy{
    @Override
    public void travel() {
        System.out.println("做飞机出行");
    }
}
package test23;

public class BicycleStrategy implements TravelStrategy{
    @Override
    public void travel() {
        System.out.println("自行车出游");
    }
}
package test23;

public class Client {

    public static void main(String[] args) {
        Person person = new Person();
        AirplaneStrategy airplaneStrategy = new AirplaneStrategy();
        person.setStrategy(airplaneStrategy);

        person.travel();
    }

}
package test23;

public class Person {

    private TravelStrategy strategy;

    public void setStrategy(TravelStrategy strategy) {
        this.strategy = strategy;
    }

    public void travel(){
        strategy.travel();
    }
}
package test23;

public class TrainStrategy implements TravelStrategy{
    @Override
    public void travel() {
        System.out.println("火车出游");
    }
}
package test23;

public interface TravelStrategy {

    public void travel();

}

C++

#include <iostream>
using namespace std;

class TravelStrategy{
public:
    virtual void travel(){}
};

class AirplaneStrategy: public TravelStrategy{
public:
    void travel(){
        cout<<"坐飞机出行"<<endl;
    }
};

class BicycleStrategy: public TravelStrategy{
public:
    void travel(){
        cout<<"自行车出行"<<endl;
    }
};

class TrainStrategy: public TravelStrategy{
public:
    void travel(){
        cout<<"火车出门"<<endl;
    }
};

class Person{
private:
    TravelStrategy *strategy;
public:
    void setStrategy(TravelStrategy *strategy){
        this->strategy = strategy;
    }
    void travel(){
        strategy->travel();
    }
};

int main(){
    AirplaneStrategy strategy;
    Person person;
    person.setStrategy(&strategy);
    person.travel();
}

标签:策略,23,travel,TravelStrategy,模式,strategy,class,void,public
From: https://www.cnblogs.com/java-six/p/16877359.html

相关文章

  • 【爱卡不卡】单身状态:开启归属感模式
    9月21日爱卡不卡昨天简书心理群开始了一个活动叫“爱卡不卡”,首次进去,还没熟知玩法,后来才知道,心理群组专门给了一组图片,图片中的三张图分别表现了三种不同的状态,当时看到......
  • 基于Spring的发布订阅模式 EventListener
    基于Spring的发布订阅模式在我们使用spring开发应用时,经常会碰到要去解耦合一些依赖调用,比如我们在做代码的发布流程中,需要去通知相关的测试,开发人员关注发布中的错误信息......
  • 设计模式-单例模式(最全总结)
    单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。饿汉式单例模式在类加载的时候就马上初始化了,此时还没到运行时只是将......
  • 图解23种设计模式
    一、单一职责原则就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职......
  • 设计模式学习(八):桥接模式
    设计模式学习(八):桥接模式作者:Grey原文地址:博客园:设计模式学习(八):桥接模式CSDN:设计模式学习(八):桥接模式桥接模式桥接模式是一种结构型模式。它将抽象部分和实现部分分离,......
  • java 单例设计模式 懒汉式
    packagecom.tedu.test;/***单例设计模式懒汉式设计*优点:不会造成资源的浪费*缺点:会造成线程安全问题*/publicclasssingleonDemo{publicstatic......
  • Go 面试每天一篇(第 23 天)
    你好哇,一起来看下1.参考答案及解析:两个地方有语法问题。golang的字符串类型是不能赋值nil的,也不能跟nil比较。2.参考答案及解析:21。defer关键字后面的函数或者方法......
  • java单例设计模式 饿汉式
    packagecom.tedu.test;/***单例设计模式的实现饿汉式*缺点:比较浪费资源*优点:饿汉式实现方式不会存在线程安全问题*单例设计模式的原则:实例唯一*/publi......
  • 2022-2023-1 20221318 《计算机基础和程序设计》第十一周学习总结
    作业信息这个作业属于那个班级https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11作业目标学习......
  • 紧急模式(emergency mode)问题处理方法
    问题现象Linux系统启动时进入紧急模式,提示:Welcometoemergencymode,如图1所示,并提示输入root密码进入维护。图1 紧急模式根因分析紧急模式提供尽可能最小的环境,即......