模板
public abstract class AskForLeaveFlow {
// 一级组长 直接审批
protected abstract void firstGroupLeader(String name);
// 二级组长部门 负责人审批
protected void secondGroupLeader(String name) {
}
// 告知HR有人 请假了
private final void notifyHr(String name) {
System.out.println ("当前有人请假了,请假人:" + name);
}
// 请假流模版!!!
public void askForLeave(String name) {
firstGroupLeader (name);
secondGroupLeader (name);
notifyHr (name);
}
}
两个重写 模板中的一些方法的类
public class CompanyA extends AskForLeaveFlow {
@Override
protected void firstGroupLeader(String name) {
System.out.println("CompanyA 组内有人请假,请假人:" + name);
}
}
public class CompanyB extends AskForLeaveFlow {
@Override
protected void firstGroupLeader(String name) {
System.out.println("CompanyB 组内有人请假,请假人:" + name);
}
@Override
protected void secondGroupLeader(String name){
System.out.println("CompanyB 部门有人请假,请假人:" + name);
}
}
测试
AskForLeaveFlow companyA = new CompanyA();
companyA.askForLeave("xiaoding");