


























责任链模式是一种行为设计模式,允许你将请求沿着处理者链进行发送,在收到请求后,每个处理这均可对请求进行处理,或将其传奇给链上的下个处理者
下面就是现实中使用的一个场景,一个公司的员工,需要进行请假,会经过以下几种情况,请假天数小于4天,主管审批,请假天数大于3天小于8天项目经理审批,请假天数大于7天,公司总经理审批
1.有四个角色,职员,主管,项目经理,总经理
2.动作:职员请假,主管,项目经理,总经理审批,这个是已有场景中可以获取到的信息,但是还缺少一个信息,就是请假的信息,这个对象需要怎么构建
在抽象类中,我们会创建两个方法,一个是各个角色都要实现各自功能的方法的approve,还有一个是各个角色approve后的,统一处理方法afterApprove,比如通知职员审批结果等操作
下面是实现代码,代码总共分为三部分,发起,执行动作,执行动作后
private static void callDesign(){ Employee employee = new Employee(); Integer wDay = employee.submit(); ProcessInfo processInfo = new ProcessInfo(); processInfo.setDay(wDay); Supervisor supervisor = new Supervisor(); supervisor.approve(processInfo); } public void approve(ProcessInfo processInfo) { processInfo.setResult(StatusConstants.approve_rs_agree); processInfo.setRole(role_name); super.afterApprove(processInfo); //可以加入外部动作... super.handler(new ProjectManager(), processInfo); } public abstract void approve(ProcessInfo processInfo); public void afterApprove(ProcessInfo p){ if (StatusConstants.approve_rs_agree.equals(p.getResult())){ System.out.println(p.getRole() + " " +StatusConstants.approve_rs_agree); } else { System.out.println(p.getRole() + " " +StatusConstants.approve_rs_reject); System.out.println(p.getRole() + " " +p.getComment()); } }
private static void callNoDesign(){
Employee employee = new Employee();
Integer wDay = employee.submit();
if (wDay < 4) {
Supervisor supervisor = new Supervisor();
supervisor.approve();
} else if (wDay < 8){
Supervisor supervisor = new Supervisor();
supervisor.approve();
ProjectManager projectManager = new ProjectManager();
projectManager.approve();
} else {
Supervisor supervisor = new Supervisor();
supervisor.approve();
ProjectManager projectManager = new ProjectManager();
projectManager.approve();
GeneralManager generalManager = new GeneralManager();
generalManager.approve();
}
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。