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();
        }
    }

    运行结果:

     

     

  • 相关阅读:
    Mysql外键和表关系
    列类型-字符类型
    列类型-日期时间型
    列类型
    破解MySQL的root密码
    数据库简单使用
    数据库简介
    socketserver
    python网络编程-粘包问题的解决
    python-网络编程,简单模型
  • 原文地址:https://www.cnblogs.com/znjy/p/15565324.html
Copyright © 2011-2022 走看看