背景
最近在做一个商管系统,有这样一个场景,当操作员提交审核后,需要创建一个待办信息,当具有审核权限的管理员登录系统后,在首页展示一个待办消息提示,当管理员审核通过后,又会创建新的待办信息,当具有二级审核权限的管理员登录系统后,同样可以看到一个待办消息,同理,如果审核未通过,也需要创建一个待办信息给提交资料的操作员,当操作员登录系统时,提示其去修改资料再次提交,此外,当待办事件处理完成后,需要将该待办信息更新为已经处理完成,背景表述完毕。
分析
以创建待办为例,根据需求的背景来分析,从提交到初审、复审等操作完成后生成待办的流程是固定的,只是待办的内容部分不同而已,也就是整体的格式是固定的,内容根据不同的步骤来填充不同的信息,因此,可以使用模板方法模式来实现该功能。
实现
首先创建一个抽象类,代码示例如下:
abstract public class Pending {
/**
* 生成待办信息
*
* @param pendingEnum 待办事件类型
* @param id 待办业务编号
*/
public void pending(PendingEnum pendingEnum, String id) {
Pending pending;
switch (pendingEnum) {
case REVIEW_COMMIT:
pending = new ReviewCommit();
break;
case FIRST_TRIAL:
pending = new FirstTrial();
break;
case REVIEW_TRIAL:
pending = new ReviewTrial();
break;
default:
return;
}
//生成待办信息:在子类中根据不同的业务场景,实现生成对应的待办信息
pending.createPending(id);
}
/**
* 生成待办信息
*
* @param id
*/
public abstract void createPending(String id);
}
然后通过具体的子类来实现待办信息的生成过程,代码示例如下(选一):
public class ReviewCommit extends Pending {
@Override
public void createPending(String id) {
//TODO
}
}