• GPT带我学-设计模式13-策略模式


    概述

    策略模式

    例子

    你可以创建一个策略工厂(Strategy Factory)来根据传入的 orgId 动态地选择合适的策略。以下是实现示例:

    1. 首先,定义策略接口和具体策略类:
    public interface CardPathStrategy {
        String generatePath();
    }
    
    public class OrganizationAStrategy implements CardPathStrategy {
        @Override
        public String generatePath() {
            return "path/for/organizationA";
        }
    }
    
    public class OrganizationBStrategy implements CardPathStrategy {
        @Override
        public String generatePath() {
            return "path/for/organizationB";
        }
    }
    
    1. 创建一个策略工厂 CardPathStrategyFactory 来根据 orgId 返回相应的策略:
    import java.util.HashMap;
    import java.util.Map;
    
    public class CardPathStrategyFactory {
        private static final Map<String, CardPathStrategy> strategies = new HashMap<>();
    
        static {
            strategies.put("orgA", new OrganizationAStrategy());
            strategies.put("orgB", new OrganizationBStrategy());
            // 添加更多策略
        }
    
        public static CardPathStrategy getStrategy(String orgId) {
            return strategies.get(orgId);
        }
    }
    
    1. 在你的业务逻辑中使用策略工厂:
    public class CardPathGenerator {
        public static void main(String[] args) {
            String orgId = "orgA";  // 这个可以是传入的参数
    
            CardPathStrategy strategy = CardPathStrategyFactory.getStrategy(orgId);
            if (strategy == null) {
                throw new IllegalArgumentException("No strategy found for orgId: " + orgId);
            }
    
            CardPathContext context = new CardPathContext(strategy);
            System.out.println(context.generateCardPath());  // 输出:path/for/organizationA
    
            orgId = "orgB";  // 更改组织ID
            strategy = CardPathStrategyFactory.getStrategy(orgId);
            if (strategy == null) {
                throw new IllegalArgumentException("No strategy found for orgId: " + orgId);
            }
    
            context.setStrategy(strategy);
            System.out.println(context.generateCardPath());  // 输出:path/for/organizationB
        }
    }
    

    通过这种方式,你可以根据传入的 orgId 动态地选择不同的策略。工厂类 CardPathStrategyFactory 负责管理策略的创建和选择逻辑,这使得代码更简洁且易于维护。

  • 相关阅读:
    保证金服务数据一致性问题-大数据解决方案
    使用 Sahi 实现 Web 自动化测试
    通过 Blob 对二进制流文件下载实现文件保存下载
    Linux--信号携带消息
    技术架构之术
    ARM体系结构
    HTML脚本、字符实体、URL
    22/7/20
    039_小驰私房菜_Camera perfermance debug
    单目标应用:世界杯优化算法(World Cup Optimization,WCO)求解单仓库多旅行商问题SD-MTSP(可更改旅行商个数及起点)
  • 原文地址:https://blog.csdn.net/qq_37398465/article/details/140309398