首页 > 编程语言 >策略模式--Java实现

策略模式--Java实现

时间:2023-11-27 09:26:21浏览次数:32  
标签:Java -- travel test021 模式 void java Travel public

具体代码

//Travel.java
package org.example.test021;

public interface Travel {
    public void travel();
}

//Person.java
package org.example.test021;

public class Person {
    public Travel getTravel() {
        return travel;
    }

    public void setTravel(Travel travel) {
        this.travel = travel;
    }

    private Travel travel;

    public void travel() {
        travel.travel();
    }

}

//AirplaneTravel.java
package org.example.test021;

public class AirplaneTravel implements Travel {
    @Override
        public void travel() {
        System.out.println("乘坐飞机旅游!");
    }
}

//TrainTravel.java
package org.example.test021;

public class TrainTravel implements Travel {
    @Override
        public void travel() {
        System.out.println("乘坐火车旅游!");
    }
}

//BicycleTravel.java
package org.example.test021;

public class BicycleTravel implements Travel {
    @Override
        public void travel() {
        System.out.println("乘坐自行车旅游!");
    }
}

//Main.java
package org.example.test021;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        Scanner sc = new Scanner(System.in);
        System.out.println("请选择你想要的旅游出行方式:1、飞机;2、火车;3、自行车");
        int i = sc.nextInt();
        if (i == 1) {
            person.setTravel(new AirplaneTravel());
        }
        else if (i == 2) {
            person.setTravel(new TrainTravel());
        }
        else if (i == 3) {
            person.setTravel(new BicycleTravel());
        }
        else {
            System.out.println("不存在这种出行方式呦~");
        }

        person.travel();
    }
}

运行结果

标签:Java,--,travel,test021,模式,void,java,Travel,public
From: https://www.cnblogs.com/liuzijin/p/17858437.html

相关文章

  • 2023版 STM32实战8 独立看门狗(IWDG)
     IWDG简介 STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。 说人话就是能解决程序跑飞的问题。  编写代码思路 -1-使用这个功能必须解除写保护-2-IW......
  • 本周刷屏的两大热点「GitHub 热点速览」
    如果你逛HackerNews或者是推特,你一定会被multipleWindow3dScene这个跨窗口渲染项目的成果刷屏,毕竟国内的技术平台上也出现了不少的模仿项目。另外一个热点,便是你在白板上画图,AI猜你在画什么的draw-fast,让你的画作更加精美。此外,还有非常实用的简历生成器Reactive-Resume......
  • vue2跨级组件传值
    //祖先组件importSonfrom'./Son'exportdefault{components:{Son},provide(){return{money:1000000000}}}子孙组件<template> <div>  孙子组件  <p>这个是爷爷传给我的钱:{{money}}</p> </div&......
  • Walrus 0.4发布:单一配置、多态运行,体验下一代应用交付模型
    今天,我们高兴地宣布云原生统一应用平台Walrus0.4正式发布,这是一个里程碑式的版本更新。新版本采用了全新的应用模型——仅需进行单一配置,即可在多种模态的基础设施及环境中运行包括应用服务及周边依赖资源在内的完整应用系统。“Youbuildit,yourunit”在这一版本中成为现......
  • 洛谷P5719 分类平均
    intmain(){ intn,k,add=0,abb=0; doublesum=0,cnt=0; cin>>n>>k; for(inti=1;i<=n;++i) if(i%k==0) { add++; sum+=i; } cout<<fixed<<setprecision(1)<<sum/add<<''; for(inti=1;i<=n;++i) if(i%k......
  • break和continue
    break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定......
  • socket.on可以直接添加自定义事件吗,理解socket的事件触发与响应
    在Web开发中,socket.on通常是用于注册处理特定事件的回调函数的方法。它主要用于处理Socket.IO库中的预定义事件,例如"connect"、"disconnect"、"message"等。然而,Socket.IO也允许你添加自定义事件,以便在客户端和服务器之间进行自定义的双向通信。要使用socket.on来处理自定义事件,......
  • 多线程.模拟龟兔赛跑
    packageJavaSE.Thread.document01;/***模拟龟兔赛跑*/publicclassDemo05implementsRunnable{publicstaticStringwinner;//胜者@Overridepublicvoidrun(){for(inti=1;i<=100;i++){if(Thread.currentThread().getName()......
  • 泛型通配符
    泛型通配符不确定集合中的元素的数据类型,使用?表示所有类型有限制的通配符<?extendsperson>只允许泛型为person及person子类的引用调用<?superperson>只允许泛型为person及person父类的引用的调用<?extendsComparable>只允许泛型实现Comparable接口的实现类的引用调用......
  • Oracle 数据库存储过程调用SpringBoot API 接口方法
    数据库存储过程代码CREATEORREPLACEPROCEDUREFSMT.P_GET_HTTP_RES/*描述:存儲過程掉用HTTP接口作者:Janus日期:2023-11-23*/(M_DOC_NOINVARCHAR2,--??M_DOC_TYPEINVARCHAR2,--?据?型M_STANDBYINVARCHAR2,--?用字段M_EM......