• 设计模式-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 - 算法    。。。 。。。
  • 相关阅读:
    延迟任务的实现方式
    brpc的安装20220620可用
    tmux和zsh的个性化配置针对无法连接外网的机器
    VimForCpp离线安装
    记录一个vim配置
    LeetCode No1051. 高度检查器
    LeetCode No890. 查找和替换模式
    LeetCode No63. 不同路径 II
    LeetCode No64. 最小路径和
    个人资料
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/7205500.html
Copyright © 2020-2023  润新知