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 +" 分钟");
        }
    }

    测试截图

     

  • 相关阅读:
    java实现文件上传下载至ftp服务器
    理解java代理模式
    [置顶] 理解java中的线程池
    wait,notify,非阻塞队列实现生产者,消费者模型
    理解java阻塞队列BlockingQueue
    CentOS下安装配置Nginx
    putty笔记
    CentOs下安装jdk、MySql、Redis笔记
    简述yum和apt-get的区别
    Linux 文件颜色说明
  • 原文地址:https://www.cnblogs.com/lx06/p/15688609.html
Copyright © 2011-2022 走看看