• 设计模式-7-策略模式


    简介:对象的一个行为,在不同的场景下,有不同的算法

    目的:让用于行为的算法和行为进行独立,互不影响

    总结:同一行为在不同的场景下,使用不同的算法

    组成:对象行为, 算法接口, 算法接口实现

    1,对象行为

    package com.design.g.strategy.base;
    /**
     * 对象行为
     * 上下文
     */
    public class Context {
    
        private StrategyService strategyService;   //策略
        
        public void method(){                      //使用策略的具体方法
            strategyService.algorithm();
        }
        
        public void setStrategyService(StrategyService strategyService) {
            this.strategyService = strategyService;
        }
        
    }

    2,算法接口

    package com.design.g.strategy.base;
    /**
     * 算法接口
     * 策略接口
     */
    public interface StrategyService {
    
        /**
         * 策略算法
         */
        void algorithm();
    }

    3,算法接口实现

    package com.design.g.strategy.base;
    
    /**
     * 算法A实现
     * 策略实现 - A算法
     */
    public class StrategyAServiceImpl implements StrategyService {
    
        @Override
        public void algorithm() {
            System.out.println("使用策略 - A - 算法    。。。 。。。");
        }
    
    }
    package com.design.g.strategy.base;
    /**
     * 算法B实现
     * 策略实现 - B算法
     */
    public class StrategyBServiceImpl implements StrategyService {
    
        @Override
        public void algorithm() {
            System.out.println("使用策略 - B - 算法    。。。 。。。");
        }
    
    }
    package com.design.g.strategy.base;
    /**
     * 算法C实现
     * 策略实现 - C算法
     */
    public class StrategyCServiceImpl implements StrategyService {
    
        @Override
        public void algorithm() {
            System.out.println("使用策略 - C - 算法    。。。 。。。");
        }
    
    }

    4,Main

    package com.design.g.strategy.base;
    
    /**
     * 7-策略模式
     * 
     * 简介:往一个方法当中插入随便一段代码
     */
    public class MainTest {
        
        public static void main(String[] args) {
            
            //使上下文method方法使用策略A算法
            Context content = new Context();
            content.setStrategyService(new StrategyAServiceImpl());
            content.method();
            
            //使上下文method方法使用策略B算法
            content.setStrategyService(new StrategyBServiceImpl());
            content.method();
            
            //使上下文method方法使用策略C算法
            content.setStrategyService(new StrategyCServiceImpl());
            content.method();
            
        }
    
    }

    5,Result

    使用策略 - A - 算法    。。。 。。。
    使用策略 - B - 算法    。。。 。。。
    使用策略 - C - 算法    。。。 。。。
  • 相关阅读:
    Centos7 安装python3 pip3
    VMW14.x虚拟机安装Mac10.13系统教程
    ADB命令大全
    appium服务器参数
    虚拟机VM14.X安装Mac10.12启动出现问题的解决方法
    Centos7安装vscode
    jmeter接口测试多数据组合登陆场景
    appium环境安装
    mysql命令大全
    jmeter录制请求
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/7205500.html
Copyright © 2020-2023  润新知