策略模式


一、基础模型

待完善。。。

二、实际应用

例1 获取审批模版

ApprovalTemplate模版接口:

public interface ApprovalTemplate {
    /**
     * 审批模版
     * @param query 入参
     * @return
     */
    ApproveDTO approval(Query query);
}

ApprovalAddTemplate新增模版实现模版接口:

@Component
public class ApprovalAddTemplate implements ApprovalTemplate {

    private static final String TITLE = "新增审批";

    @Override
    public ApproveDTO approval(Query query) {
        Map<String,String> initData=new HashMap<>();

        //TODO 代码逻辑

        initData.put("type","add");

        if(!ObjectUtils.isEmpty(initData)) {
            ApproveDTO approveDTO = ApproveDTO.builder().title(TITLE).initData(initData).build();
            return approveDTO;
        }
        return null;
    }
}

ApprovalUpdateTemplate修改模版实现模版接口:

@Component
public class ApprovalUpdateTemplate implements ApprovalTemplate {

    private static final String TITLE = "修改审批";

    @Override
    public ApproveDTO approval(Query query) {
        Map<String, String> initData = new HashMap<>();
        
        //TODO 代码逻辑

        initData.put("type", "update");

        if (!ObjectUtils.isEmpty(initData)) {
            ApproveDTO approveDTO = ApproveDTO.builder().title(TITLE).initData(initData).build();
            return approveDTO;
        }
        return null;
    }

创建一个上下文ApprovalContext:

public class ApprovalContext {

    private ApproveDTO approveDTO;

    public ApprovalContext(ApprovalTemplate approvalTemplate) {
        this.approvalTemplate = approvalTemplate;
    }

    public ApproveDTO approvalTemplate(Query query){
        //TODO 代码逻辑

        //获取审批模版
        approveDTO = approvalTemplate.approval(query);

        return approveDTO;
    }
 }

通过上下文approvalContext获取不同的模版:

public static void main(String[] args){
	//新增审核
   ApprovalContext approvalContext = new ApprovalContext(new ApprovalAddTemplate());
   ApproveDTO approveDTO = approvalContext.approvalTemplate(query);

	//修改审核
    ApprovalContext approvalContext = new ApprovalContext(new ApprovalUpdateTemplate());
    ApproveDTO approveDTO = approvalContext.approvalTemplate(query);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值