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.setRequestType("请假");
request.setRequestContent("XX来请假");
request.setNumber(1);
jinli.RequestApplications(request);
//客户端的申请都是有“经理”发起,但实际上谁来决策由具体管理类来处理,客户端不知道
Request request2 = new Request();
request2.setRequestType("请假");
request2.setRequestContent("XX来请假");
request2.setNumber(4);
jinli.RequestApplications(request2);
Request request3 = new Request();
request3.setRequestType("加薪");
request3.setRequestContent("XX请求加薪");
request3.setNumber(500);
jinli.RequestApplications(request3);
Request request4 = new Request();
request4.setRequestType("加薪");
request4.setRequestContent("XX请求加薪");
request4.setNumber(1000);
jinli.RequestApplications(request4);
}
}
5、结果:
6、书籍推荐
《大话设计模式》。上面的例子来自该书的改变,该书通过小菜和大鸟两人在生活中遇到的事情引出设计模式来解决问题,富有趣味性。读起来没那么枯燥无味。