赞
踩
策略模式
你可以创建一个策略工厂(Strategy Factory)来根据传入的 orgId
动态地选择合适的策略。以下是实现示例:
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"; } }
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); } }
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
负责管理策略的创建和选择逻辑,这使得代码更简洁且易于维护。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。