package com.zcr.chain;
//申请
public class Request
{
? ? //申请类别
? ? private String requestType;
? ?
? ? //申请内容
? ? private String requestContent;
? ?
? ? //数量
? ? private int number;
? ? public String getRequestType()
? ? {
? ? ? ? return requestType;
? ? }
? ? public void setRequestType(String requestType)
? ? {
? ? ? ? this.requestType = requestType;
? ? }
? ? public String getRequestContent()
? ? {
? ? ? ? return requestContent;
? ? }
? ? public void setRequestContent(String requestContent)
? ? {
? ? ? ? this.requestContent = requestContent;
? ? }
? ? public int getNumber()
? ? {
? ? ? ? return number;
? ? }
? ? public void setNumber(int number)
? ? {
? ? ? ? this.number = number;
? ? }
? ?
? ?
}
?
package com.zcr.chain;
//管理者
public abstract class Manager
{
? ? protected String name;
? ?
? ? public Manager()
? ? {
? ? ? ?
? ? }
? ?
? ? //管理者的上级
? ? protected Manager superior;
? ?
? ? public Manager(String name)
? ? {
? ? ? ? this.name = name;
? ? }
? ?
? ? //设置管理者的上级
? ? public void SetSuperior(Manager superior)
? ? {
? ? ? ? this.superior = superior;
? ? }
? ?
? ? //申请请求
? ? abstract public void RequestApplications(Request request);
}
?
package com.zcr.chain;
//经理
public class Majordomo extends Manager
{
? ? public Majordomo(String name)
? ? {
? ? ? ? this.name = name;
? ? }
? ?
? ? @Override
? ? public void RequestApplications(Request request)
? ? {
? ? ? ? //经理所能有的权限就是可准许下属5天内的假期
? ? ? ? if(request.getRequestType().equals("请假") && request.getNumber() <= 5)
? ? ? ? {
? ? ? ? ? ? System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNumber()+"被批准");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? //其余的申请都需转到上级
? ? ? ? ? ? if(null != superior)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? superior.RequestApplications(request);
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
?
package com.zcr.chain;
//总经理
public class GeneralManager extends Manager
{
? ? public GeneralManager(String name)
? ? {
? ? ? ? this.name = name;
? ? }
? ?
? ?
? ? @Override
? ? public void RequestApplications(Request request)
? ? {
? ? ? ? //总经理允许任意时间假期
? ? ? ? if(request.getRequestType().equals("请假"))
? ? ? ? {
? ? ? ? ? ? System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNumber()+"被批准");
? ? ? ? }
? ? ? ? else if(request.getRequestType().equals("加薪") && request.getNumber() <=500)
? ? ? ? {
? ? ? ? ? ? System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNumber()+"被批准");
? ? ? ? }
? ? ? ? else if(request.getRequestType().equals("加薪") && request.getNumber() >500)
? ? ? ? {
? ? ? ? ? ? System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNumber()+"再说把");
? ? ? ? }
? ? }
? ?
}
?
package com.zcr.chain;
//经理
public class CommonManager extends Manager
{
? ?
? ? public CommonManager(String name)
? ? {
? ? ? ? this.name = name;
? ? }
? ? @Override
? ? public void RequestApplications(Request request)
? ? {
? ? ? ? //经理所能有的权限就是可准许下属两天内的假期
? ? ? ? if(request.getRequestType().equals("请假") && request.getNumber() <= 2)
? ? ? ? {
? ? ? ? ? ? System.out.println(name+":"+request.getRequestContent()+"数量"+request.getNumber()+"被批准");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? //其余的申请都需转到上级
? ? ? ? ? ? if(null != superior)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? superior.RequestApplications(request);
? ? ? ? ? ? }
? ? ? ? }
? ? }
}
?
package com.zcr.chain;
public class ChainTest
{
? ? public static void main(String[] args)
? ? {
? ? ? ? CommonManager jinli = new CommonManager("经理");
? ? ? ? Majordomo zongjian = new Majordomo("总监");
? ? ? ? GeneralManager zongjingli = new GeneralManager("总经理");
? ? ? ?
? ? ? ? //设置上机,完全根据实际需求来更改设置
? ? ? ? jinli.SetSuperior(zongjian);
? ? ? ? zongjian.SetSuperior(zongjingli);
? ? ? ?
? ? ? ? Request request = new Request();
? ? ? ? request.s