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

    运行结果:

     

     

  • 相关阅读:
    安卓系统源码编译系列(六)——单独编译内置浏览器WebView教程
    android4.0浏览器在eclipse中编译的步骤
    android.net.wifi的简单使用方法
    android:sharedUserId 获取系统权限
    android 常见死机问题--log分析
    android anr分析方法
    android的logcat详细用法
    Android 设计模式 之 观察者模式
    Android 设计模式 之 单例模式
    android 自定义控件 使用declare-styleable进行配置属性(源码角度)
  • 原文地址:https://www.cnblogs.com/znjy/p/15565324.html
Copyright © 2011-2022 走看看