博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java23中设计模式只责任链模式
阅读量:4591 次
发布时间:2019-06-09

本文共 3465 字,大约阅读时间需要 11 分钟。

package com.bdqn.bs;/** * 封装请假的基本信息 * @author OU * */public class LeaveRequest {    private String empName;    private int leaveDays;    private String reason;     public LeaveRequest(String empName, int leaveDays, String reason) {        this.empName = empName;        this.leaveDays = leaveDays;        this.reason = reason;    }    public LeaveRequest() {    }    public String getEmpName() {        return empName;    }    public void setEmpName(String empName) {        this.empName = empName;    }    public int getLeaveDays() {        return leaveDays;    }    public void setLeaveDays(int leaveDays) {        this.leaveDays = leaveDays;    }    public String getReason() {        return reason;    }    public void setReason(String reason) {        this.reason = reason;    }         }
leaveRequest
package com.bdqn.bs;/** * 抽象类 * @author OU * */public abstract class Leader {  protected String name;  protected Leader nextLeader;//责任链上的后连对象  public Leader(String name) {    this.name = name;}//设定责任链上的后继对象public void setNextLeader(Leader nextLeader) {    this.nextLeader = nextLeader;}//处理请求的核心的业务方法public abstract void handleRequest(LeaveRequest request);  }
leader 抽象类
package com.bdqn.bs;/** * 主管 * @author OU * */public class Director  extends Leader{      public Director(String name) {        super(name);    }    public void handleRequest(LeaveRequest request) {         if ( request.getLeaveDays() < 3) {               System.out.println("员工:"+request.getEmpName()+"请假,天数"+request.getLeaveDays()+"理由"+request.getReason());                   System.out.println("主任:"+this.name+"审批通过");                                  } else {                if (this.nextLeader!=null) {                    this.nextLeader.handleRequest(request);                                    }            }            }                   }
director
package com.bdqn.bs;/** * 经理 * @author OU * */public class Manager extends Leader{    public Manager(String name) {        super(name);    }    public void handleRequest(LeaveRequest request) {         if ( request.getLeaveDays() < 10) {               System.out.println("员工:"+request.getEmpName()+"请假,天数"+request.getLeaveDays()+"理由"+request.getReason());                   System.out.println("经理:"+this.name+"审批通过");                                  } else {                if (this.nextLeader!=null) {                this.nextLeader.handleRequest(request);                            }            }            }}
manager
package com.bdqn.bs;public class GeneralManager extends Leader{    public GeneralManager(String name) {        super(name);    }    public void handleRequest(LeaveRequest request) {         if ( request.getLeaveDays() < 30) {               System.out.println("员工:"+request.getEmpName()+"请假,天数"+request.getLeaveDays()+"理由"+request.getReason());                   System.out.println("总经理:"+this.name+"审批通过");                                  } else {                     System.out.println("莫非"+request.getEmpName()+"想辞职");                            }{            }            }}
Generalmanager
package com.bdqn.bs;public class Client {  public static void main(String[] args) {     Leader a=new Director("张三");     Leader b=new Manager("李四");     Leader c=new GeneralManager("王五");     //住址责任链对象的关系     a.setNextLeader(b);     b.setNextLeader(c);    //请假三天     LeaveRequest res=new LeaveRequest("欧长路",4, "不舒服");    a.handleRequest(res);      }}
client 测试

 

转载于:https://www.cnblogs.com/ou-pc/p/7507799.html

你可能感兴趣的文章
NET设计规范(二) 命名规范
查看>>
VMware 9.0.1安装Mac OS X Mountain Lion 10.8.2
查看>>
SSL延迟
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
深入理解DIP、IoC、DI以及IoC容器
查看>>
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
java中==和equals
查看>>
CCActionPageTurn3D
查看>>
python random
查看>>
esp32-智能语音-cli(调试交互命令)
查看>>
netty与MQ使用心得
查看>>
关于dl dt dd 文字过长换行在移动端显示对齐的探讨总结
查看>>
swoolefy PHP的异步、并行、高性能网络通信引擎内置了Http/WebSocket服务器端/客户端...
查看>>
Python学习笔记
查看>>
unshift()与shift()
查看>>
使用 NPOI 、aspose实现execl模板公式计算
查看>>
行为型模式:中介者模式
查看>>
How to Notify Command to evaluate in mvvmlight
查看>>