• 策略模式——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();
        }
    }

    运行结果:

     

     

  • 相关阅读:
    java资料
    tomcat内存配置
    mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译
    Sturts2的国际化处理
    web.xml中如何设置配置文件的加载路径
    varchar和varchar2的区别
    IDEA 常见文件类型的图标介绍
    IDEA文件编码修改
    Debug 介绍
    IntelliJ IDEA 显示行号方法
  • 原文地址:https://www.cnblogs.com/znjy/p/15565324.html
Copyright © 2020-2023  润新知