• 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 负责管理策略的创建和选择逻辑,这使得代码更简洁且易于维护。

  • 相关阅读:
    顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-webrtc(浏览器直接拨打电话)
    国庆day1
    Linux IO函数
    计算机毕业设计ssm电子书店管理系统ya226系统+程序+源码+lw+远程部署
    javaEE进阶
    cmake 工具 三 add_libary, set_target_properties,link_libary, target_link_libary
    deb包格式实例详解
    MATLAB中split函数使用
    互帮互助,小bug记录:libcurl timeout不起作用,程序无法结束
    分类预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络数据分类预测
  • 原文地址:https://blog.csdn.net/qq_37398465/article/details/140309398