动态策略工厂

本文介绍如何通过定义抽象接口、枚举service类型和实现类,实现动态服务注册,达到灵活管理策略的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义抽象接口

public  interface IHanderService{
    
      /**
     * 执行入器
     *
     * @return
     */
    Result actuator() 

    /**
     * 携带请求完整参数
     *
     * @param paramDTO
     */
    void setParamVo(ParamDTO paramDTO);
}

定义service枚举


public enum ActionHanderEnum {

    PATIENT_REGISTRY("10001", "PatientRegistry","基本信息接收");

    @Getter
    private String key;
    @Getter
    private String serviceName;
    @Getter
    private String val;

    ActionHanderEnum(String key, String serviceName,String val) {
        this.key = key;
        this.serviceName = serviceName;
        this.val = val;
    }

    public static ActionHanderEnum getE
### 策略工厂模式的概念 策略工厂模式是一种结合了 **策略模式** 和 **工厂模式** 的设计模式。它利用策略模式提供灵活的行为切换能力,同时借助工厂模式动态创建具体策略实例的能力。这种组合使得系统能够在运行时根据需求选择并初始化相应的策略。 通过这种方式,可以有效减少硬编码逻辑,增强系统的扩展性和可维护性。例如,在实际开发中,可能需要根据不同条件加载不同的支付方式、折扣计算规则或者数据处理流程,这时就可以采用策略工厂模式[^1]。 --- ### 策略工厂模式的实现方法 #### 1. 定义策略接口 首先定义一个通用的策略接口或抽象类,所有的具体策略都需要实现该接口中的方法。这一步是为了统一各个策略的操作入口。 ```java public interface Strategy { void execute(); } ``` #### 2. 创建具体策略类 针对每种特定行为,分别实现上述 `Strategy` 接口的具体子类。以下是两个简单的例子: ```java // 具体策略A public class ConcreteStrategyA implements Strategy { @Override public void execute() { System.out.println("Executing strategy A"); } } // 具体策略B public class ConcreteStrategyB implements Strategy { @Override public void execute() { System.out.println("Executing strategy B"); } } ``` #### 3. 构建工厂类 接下来构建一个负责生产策略对象的工厂类。这个工厂可以根据输入参数决定返回哪个具体的策略实例。 ```java public class StrategyFactory { private static final Map<String, Strategy> strategies = new HashMap<>(); static { strategies.put("A", new ConcreteStrategyA()); strategies.put("B", new ConcreteStrategyB()); } public static Strategy getStrategy(String type) { if (type == null || !strategies.containsKey(type)) { throw new IllegalArgumentException("Unknown strategy type: " + type); } return strategies.get(type); } } ``` 这里采用了单例模式缓存已有的策略对象,避免重复创建相同的实例。如果每次调用都需要新实例,则可以直接在 `getStrategy()` 方法内部即时生成相应类型的策略对象[^2]。 #### 4. 使用示例 最后展示如何在业务代码里运用此模式完成任务分配工作流控制等功能。 ```java public class MainApp { public static void main(String[] args) { String selectedType = "A"; // 假设从外部传入的选择器值 try { Strategy chosenStrategy = StrategyFactory.getStrategy(selectedType); chosenStrategy.execute(); // 调用所选策略的方法 } catch(IllegalArgumentException e){ System.err.println(e.getMessage()); } } } ``` 当程序执行到此处时会打印 `"Executing strategy A"` 或者其他指定类型对应的结果消息取决于变量 `selectedType` 当前设置为何值[^3]。 --- ### 总结说明 以上就是关于策略工厂模式的一个基本介绍及其简单实现过程演示。可以看到这样的架构不仅让新增加的新功能变得容易而且还能保持原有结构不受干扰从而达到更好的软件工程实践标准。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值