设为首页 加入收藏

TOP

设计模式学习之职责链模式(一)
2015-07-26 13:14:18 来源: 作者: 【 】 浏览:42
Tags:设计模式 习之 职责 模式

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

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇设计模式学习之——命令模式 下一篇设计模式之享元模式——初学

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: