zoukankan      html  css  js  c++  java
  • 设计模式-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 - 算法    。。。 。。。
  • 相关阅读:
    .NET题目(收集来自网络)
    c#反射
    c#泛型
    asp.net core 下载文件,上传excel文件
    remote: HTTP Basic: Access denied fatal: Authentication failed for'https'
    获取jwt(json web token)中存储的用户信息
    System.data.sqlclient.sqlexception:将截断字符串或二进制数据终止
    代码热更新
    左手坐标系 vs 右手坐标系
    GPU相关临时笔记
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/7205500.html
Copyright © 2011-2022 走看看