zoukankan      html  css  js  c++  java
  • 策略模式——java实现

    问题描述:

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

    类图:

    Java源代码:

     

    //Person.java
    package shiyan23;
    /**
     * @Description:客户(环境类)
     * @author 张紫诺
     *
     */
    public class Person {
        //聚合策略类对象
        private TravelStrategy strategy;
        public void setStrategy(TravelStrategy strategy) {
            this.strategy=strategy;
        }
        public void travel() {
            strategy.travel();
        }
    }
    //TravelStrategy.java
    package shiyan23;
    /**
     * @Description:抽象策略类
     * @author 张紫诺
     *
     */
    public interface TravelStrategy {
        public void travel();
    }
    //AirplaneStrategy.java
    package shiyan23;
    /**
     * @Description:具体策略类,封装算法
     * @author 张紫诺
     *
     */
    public class AirplaneStrategy implements TravelStrategy{
    
        public void travel() {
            System.out.println("乘坐飞机旅行");
        }
        
    }
    //BicycleStrategy.java
    package shiyan23;
    /**
     * @Description:具体策略类,封装算法
     * @author 张紫诺
     *
     */
    public class BicycleStrategy implements TravelStrategy{
    
        public void travel() {
            System.out.println("自行车游");
        }
        
    }
    //TrainStrategy.java
    package shiyan23;
    /**
     * @Description:具体策略类,封装算法
     * @author 张紫诺
     *
     */
    public class TrainStrategy implements TravelStrategy{
    
        public void travel() {
            System.out.println("乘火车旅行");
        }
        
    }
    //Client.java
    package shiyan23;
    
    import java.util.Scanner;
    
    public class Client {
        public static void main(String[] args) {
            Person p = new Person();
            System.out.println("请选择:1、飞机  2、火车  3、自行车");
            Scanner input=new Scanner(System.in);
            int i=input.nextInt();
            if(i==1) {
                p.setStrategy(new AirplaneStrategy());
            }else if(i==2) {
                p.setStrategy(new TrainStrategy());
            }else if(i==3) {
                p.setStrategy(new BicycleStrategy());
            }
            p.travel();
        }
    }

    运行结果:

     

     

  • 相关阅读:
    7个简单但棘手的JavaScript面试问题
    Promise.then链式调用顺序
    JS模拟实现枚举
    web前端常见的加密算法介绍
    JavaScript浮点数精度
    工作中常用的JavaScript函数片段
    JavaScript Array (数组) 对象
    快速找出数组中是否包含公共项
    用JavaScript让你的浏览器说话
    JavaScript的声明提升
  • 原文地址:https://www.cnblogs.com/znjy/p/15565324.html
Copyright © 2011-2022 走看看