日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > GOF23設計模式之責任鏈模式(chain of responsibility)之實現

GOF23設計模式之責任鏈模式(chain of responsibility)之實現

來源:程序員人生   發布時間:2015-04-23 08:00:40 閱讀次數:3525次

/**
 * 請假條
 * 封裝請假的信息。
 */
package com.bjsxt.cn.chainOfResponsibility;
public class LeaveRequest {
 private String empName;
 private int leaveDays;
 private String reasons;
 
 public LeaveRequest(String empName, int leaveDays, String reasons) {
  super();
  this.empName = empName;
  this.leaveDays = leaveDays;
  this.reasons = reasons;
 }
 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 getReasons() {
  return reasons;
 }
 public void setReasons(String reasons) {
  this.reasons = reasons;
 }
 @Override
 public String toString() {
  
  return "雇員:" + empName + "請假,天數:" + leaveDays + ",請假理由:" + reasons;
 }
}




/**
 * 抽象類Leader,在請假的流程當中,把審批人員
 * 主任,經理,總經理,抽象成1個類,他們
 * 具有相同的功能,審批。handleRequest
 * 2015年4月9日14:40:49
 * 
 */
package com.bjsxt.cn.chainOfResponsibility;
public abstract class Leader {
 protected String name;
 protected Leader nextLeader;
 
 public Leader(String name) {
  super();
  this.name = name;
 }
 public void setNextLeader(Leader nextLeader) {
  this.nextLeader = nextLeader;
 }
 
 public abstract void handleRequest(LeaveRequest request);
 public abstract String check();
}




/**
 * 主任類:
 *  如果請假天數小于3天,主任審批
 * 2015年4月9日14:43:36
 */
package com.bjsxt.cn.chainOfResponsibility;
public class Director extends Leader {
 public Director(String name) {
  super(name);
 }
 @Override
 public void handleRequest(LeaveRequest request) {
  if (request.getLeaveDays() < 3) {
   System.out.println("雇員名字:" + request.getEmpName() +"請假,天數為:" + request.getLeaveDays() +"請假緣由為" +request.getReasons());
   System.out.println(check());
  } else {
   if (this.nextLeader != null) {
    this.nextLeader.handleRequest(request);
   }
  }
 }
 @Override
 public String check() {
  return "主任:" + name + "審批通過!";
  
 }
 
 
}




/**
 * 時間:2015年4月9日14:48:13
 * 經理類: 如果請假條數大于等于3天,小于10天,經理審批
 */
package com.bjsxt.cn.chainOfResponsibility;
public class Manager extends Leader {
 
 public Manager(String name) {
  super(name);
 }
 
 @Override
 public void handleRequest(LeaveRequest request) {
  if (request.getLeaveDays() <10) {
   System.out.println(request.toString());
   System.out.println(check());
  } else {
   if (this.nextLeader != null) {
    this.nextLeader.handleRequest(request);
   }
  }
 }
 @Override
 public String check() {
  return "經理:" + name + "審批通過";
 }
}




/**
 * 總經理: 如果大于等于10天,小于310天,總經理審批
 * 時間:2015年4月9日14:53:41
 */
package com.bjsxt.cn.chainOfResponsibility;
public class GeneralManager extends Leader {
 public GeneralManager(String name) {
  super(name);
 }
 
 
 @Override
 public void handleRequest(LeaveRequest request) {
  if (request.getLeaveDays() < 30) {
   System.out.println(request.toString());
   System.out.println(check());
  } else {
   System.out.println(request.toString() + "難道想辭職,不批準");
  }
 }
 @Override
 public String check() {
  return "總經理 :" + name +"審核通過";
 }
}


/**
 * 2015年4月9日14:59:50
 * 測試程序:測試責任鏈模式的使用
 * 我們使用責任鏈模式而不是非常繁冗復雜的ifelse結構,是為了擴大時的方便。
 * 例如,此時,我們如果想要加入1位副總經理,來處理10到20天的假條審核
 * 我們只需要加入新的類ViceGeneralManager,在客戶程序中創建新的責任鏈便可。
 * 這樣符合OCP原則,即開閉原則。
 */
package com.bjsxt.cn.chainOfResponsibility;
public class Client {
 public static void main(String[] args) {
  LeaveRequest l1 = new LeaveRequest("杰倫", 1, "旅游");
  LeaveRequest l2 = new LeaveRequest("張靚穎", 8, "戀愛");
  LeaveRequest l3 = new LeaveRequest("夏洛蒂", 15, "失戀了");
  LeaveRequest l4 = new LeaveRequest("巴赫", 37, "在家帶孩子");
  
  Leader ll1 = new Director("張主任");
  Leader ll2 = new Manager("李經理");
  Leader ll3 = new GeneralManager("王總經理");
  //創建責任鏈
  ll1.setNextLeader(ll2);
  ll2.setNextLeader(ll3);
  
  ll1.handleRequest(l1);
  ll1.handleRequest(l2);
  ll1.handleRequest(l3);
  ll1.handleRequest(l4);
  
 }
}
/*
雇員名字:杰倫請假,天數為:1請假緣由為旅游
主任:張主任審批通過!
雇員:張靚穎請假,天數:8,請假理由:戀愛
經理:李經理審批通過
雇員:夏洛蒂請假,天數:15,請假理由:失戀了
總經理 :王總經理審核通過
雇員:巴赫請假,天數:37,請假理由:在家帶孩子難道想辭職,不批準
 * 
 * 
 */



/**
 * 加入副總經理處理10天到210天的假條審核
 * 2015年4月9日15:12:46
 */
package com.bjsxt.cn.chainOfResponsibility;
public class ViceGeneralManager extends Leader{
 public ViceGeneralManager(String name) {
  super(name);
 }
 @Override
 public void handleRequest(LeaveRequest request) {
  if (request.getLeaveDays() < 20) {
   System.out.println(request.toString());
   System.out.println(check());
  } else {
   if (this.nextLeader != null) {
    this.nextLeader.handleRequest(request);
   }
  }
 }
 @Override
 public String check() {
  return "副總經理:" + name + "審核通過";
 }
}



/**
 * 增加ViceGeneralManager類以后稍作調劑就能夠加入加入該類以后的新的責任鏈。
 */
package com.bjsxt.cn.chainOfResponsibility;
public class Client2 {
 public static void main(String[] args) {
  LeaveRequest l1 = new LeaveRequest("杰倫", 1, "旅游");
  LeaveRequest l2 = new LeaveRequest("張靚穎", 8, "戀愛");
  LeaveRequest l3 = new LeaveRequest("夏洛蒂", 15, "失戀了");
  LeaveRequest l4 = new LeaveRequest("巴赫", 37, "在家帶孩子");
  
  Leader ll1 = new Director("張主任");
  Leader ll2 = new Manager("李經理");
  Leader ll22 = new ViceGeneralManager("王副總經理");
  Leader ll3 = new GeneralManager("王總經理");
  
  //創建責任鏈
  ll1.setNextLeader(ll2);
  ll2.setNextLeader(ll22);
  ll22.setNextLeader(ll3);
  
  ll1.handleRequest(l1);
  ll1.handleRequest(l2);
  ll1.handleRequest(l3);
  ll1.handleRequest(l4);
  
 }
}
/*
 * 
雇員名字:杰倫請假,天數為:1請假緣由為旅游
主任:張主任審批通過!
雇員:張靚穎請假,天數:8,請假理由:戀愛
經理:李經理審批通過
雇員:夏洛蒂請假,天數:15,請假理由:失戀了
副總經理:王副總經理審核通過
雇員:巴赫請假,天數:37,請假理由:在家帶孩子難道想辭職,不批準
 * 
 * */




生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品国产一 | 精品一区在线 | 在线一区二区视频 | 99热只有精品在线观看 | 日韩电影在线视频 | 天堂√最新版中文在线 | 国产一区不卡 | 欧美在线观看视频一区二区 | 黑人巨大精品欧美一区免费视频 | 韩日精品一区二区 | 国产高清不卡 | 超碰中文字幕 | 免费看的黄色网 | 免费av一区二区三区 | 亚洲色图28p| 国产一区二区三区不卡在线观看 | 99久久久国产精品免费调教网站 | 国产黄色av电影 | 色嗨嗨av一区二区三区 | 成人天堂资源www在线 | 亚洲免费黄色 | 蜜桃一区二区 | 久久久精品国产 | 国产日韩中文字幕 | 亚洲区一区二 | 精品欧美一区二区久久久 | 国产成人精品一区二区三区四区 | 黄色免费网站视频 | 精品一区二区国产 | 青青草免费在线视频播放 | 99久久精品国产一区二区野战 | 一级黄色免费看 | 国产精品久久久久7777色妞 | 亚洲精品免费在线 | 日韩欧美一级 | 亚洲免费小视频 | 希岛爱理和黑人中文字幕系列 | 国产精品视频久久 | 国产不卡一区 | 爱情岛论坛在线观看 | 亚洲国产精品99久久久久久久久 |