zoukankan      html  css  js  c++  java
  • java23中设计模式只责任链模式

    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 测试
  • 相关阅读:
    出自 HTML4 规范的可用颜色字符串值列表(常用颜色名称及对应的十六进制值)
    HTML5 Canvas 八星聚义动态效果
    HTML5 Canvas 绘制澳大利亚国旗
    HTML5 Canvas 绘制新西兰国旗
    HTML5 Canvas 绘制加拿大枫叶旗
    HTML5 Canvas 绘制英国国旗
    HTML5 Canvas 绘制星条旗
    当类中的方法全部都是 static 关键字修饰时 ,它的构造方法最好作为 private 私有化,理由是方法全是 static, 不知道的人会去new对象去调用,需要调用构造方法。 但 static的方法直接用类名调用就行!
    【Java面试复习经典】传智播客Java就业班入学测试题及答案解析(2014年版)
    【Java面试复习经典】传智播客Java就业班入学测试题及答案解析(2012年版)
  • 原文地址:https://www.cnblogs.com/ou-pc/p/7507799.html
Copyright © 2011-2022 走看看