一、基础模型
待完善。。。
二、实际应用
例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);
}