zoukankan      html  css  js  c++  java
  • 设计模式策略模式

    类图

     

    源码

    TravelStrategy.java
    package com.strategy;
    
    public abstract class TravelStrategy {
        public abstract int costTime(int km);
    }
    
    AirPlaneTravelStrategy.java
    package com.strategy;
    
    public class AirPlaneTravelStrategy extends TravelStrategy{
        @Override
        public int costTime(int km) {
            return km * 1;
        }
    }
    
    
    
    CarTravelStrategy.java
    package com.strategy;
    
    public class CarTravelStrategy extends TravelStrategy{
        @Override
        public int costTime(int km) {
            return km * 1;
        }
    
    }
    
    TravelHappy.java
    package com.strategy;
    
    public class TravelHappy {
        private TravelStrategy strategy;
    
        public TravelHappy(TravelStrategy strategy){
            this.strategy = strategy;
        }
    
        public int travelCostTime(int km){
            return strategy.costTime(km);
        }
    }
    
    Client.java
    package com.strategy;
    
    public class Client {
        public static void main(String args[]){
            TravelStrategy strategy;
            TravelHappy th;
            //这里的策略可以使用配置文件进行读取
            strategy = new AirPlaneTravelStrategy();
            th = new TravelHappy(strategy);
            System.out.println("从北京到上海 1000公里");
            int costTime;
            costTime = th.travelCostTime(1000);
            System.out.println("-------costTime-------------" + costTime +" 分钟");
    
            System.out.println("--------------------");
            //这里的策略可以使用配置文件进行读取
            strategy = new CarTravelStrategy();
            th = new TravelHappy(strategy);
            costTime = th.travelCostTime(1000);
            System.out.println("-------costTime-------------" + costTime +" 分钟");
        }
    }

    测试截图

     

  • 相关阅读:
    重新认识自己
    GIT学习之路第一天 简介及其安装
    GIT学习之路第一天 简介及其安装
    2017杭电多校第六场1008 Kirinriki
    2017杭电多校第六场1008 Kirinriki
    常用技巧精选之尺取法
    常用技巧精选之尺取法
    2017杭电多校第六场1011Classes
    2017杭电多校第六场1011Classes
    2017杭电多校第六场03Inversion
  • 原文地址:https://www.cnblogs.com/lx06/p/15688609.html
Copyright © 2011-2022 走看看