zoukankan      html  css  js  c++  java
  • 责任链设计模式Demo

      实现功能:请假审批流程,请假3天以内,主任审批;请假3-10天,经理审批;请假10天以上,总经理审批。

    1.定义一个请假请求LeaveRequest的类。

     1 public class LeaveRequest {
     2         private String name;//请假人姓名
     3         private int days;//请假天数
     4         private String reason;//请假原因
     5 
     6         public LeaveRequest(String name, int days, String reason) {
     7             this.name = name;
     8             this.days = days;
     9             this.reason = reason;
    10         }
    11 
    12         public String getName() {
    13             return name;
    14         }
    15 
    16         public void setName(String name) {
    17             this.name = name;
    18         }
    19 
    20         public int getDays() {
    21             return days;
    22         }
    23 
    24         public void setDays(int days) {
    25             this.days = days;
    26         }
    27 
    28         public String getReason() {
    29             return reason;
    30         }
    31 
    32         public void setReason(String reason) {
    33             this.reason = reason;
    34         }
    35     }

    2.定义一个Leader的抽象类,有一个上级领导的nextLeader属性,还有一个处理请假请求handleRequest()的方法

     1 public abstract class Leader {
     2     protected String name;
     3     protected Leader nextLeader;//责任链后期对象
     4     public Leader(){
     5 
     6     }
     7 
     8     public Leader(String name){
     9         super();
    10         this.name=name;
    11     }
    12 
    13     public void setNextLeader(Leader nextLeader) {
    14         this.nextLeader = nextLeader;
    15     }
    16 
    17     //处理请求核心业务方法
    18     public abstract void handleRequest(LeaveRequest leaveRequest);
    19 }

    3.定义一个Director的子类,重写父类方法,3天以内主任处理,3天以上,交给上级领导

    public class Director extends Leader {
    
        public Director(String name){
            super(name);
        }
        @Override
        public void handleRequest(LeaveRequest leaveRequest) {
            if (leaveRequest.getDays()<3){
                //处理
                System.out.println("主任审批通过...");
            }else {
                //处理不了,给下处理
                this.nextLeader.handleRequest(leaveRequest);
            }
        }
    }

    4.同理,Manager类只处理3-10天的请假。

     1 public class Manager extends Leader{
     2     public Manager(String name){
     3         super(name);
     4     }
     5     @Override
     6     public void handleRequest(LeaveRequest leaveRequest) {
     7         if (leaveRequest.getDays()>3&&leaveRequest.getDays()<=10){
     8             System.out.println("经理审批成功");
     9         }else {
    10             this.nextLeader.handleRequest(leaveRequest);
    11         }
    12     }
    13 }

    5.GeneralMmanger类处理10天以上的请假

     1 public class GeneralManager extends Leader {
     2     public GeneralManager(String name){
     3         super(name);
     4     }
     5     @Override
     6     public void handleRequest(LeaveRequest leaveRequest) {
     7         if (leaveRequest.getDays()<30){
     8             System.out.println("总经理审批通过...");
     9         }else {
    10             System.out.println(leaveRequest.getName()+":想辞职吧!");
    11         }
    12     }
    13 }

    6.测试类代码

     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4         Director director = new Director("主任");
     5         Manager manager = new Manager("经理");
     6         GeneralManager generalManager = new GeneralManager("总经理");
     7         director.setNextLeader(manager);
     8         manager.setNextLeader(generalManager);
     9         LeaveRequest leaveRequest = new LeaveRequest("洪昶", 1, "面试");
    10         director.handleRequest(leaveRequest);
    11     }
    12 }

    7.结果展示

  • 相关阅读:
    jquery animate()方法 语法
    jquery unload方法 语法
    jquery undelegate()方法 语法
    jquery unbind()方法 语法
    jquery trigger() 方法 语法
    jquery toggle()方法 语法
    jquery change() 函数 语法
    jquery blur()函数 语法
    jquery bind()方法 语法
    jquery checked选择器 语法
  • 原文地址:https://www.cnblogs.com/WhiperHong/p/11502406.html
Copyright © 2011-2022 走看看