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

    责任链模式:将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。

    开发中常见场景

      - java中,异常机制

      - javascript语言中,事件的冒泡和捕获机制

      - Servlet开发中,过滤器的链式处理

      - Struts2中,拦截器的调用。

    领导抽象类Leader

    public abstract class Leader {
        protected String name;
        protected Leader nextLeader;
        
        public Leader() {
            super();
            // TODO Auto-generated constructor stub
        }
        public Leader(String name, Leader nextLeader) {
            super();
            this.name = name;
            this.nextLeader = nextLeader;
        }
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Leader getNextLeader() {
            return nextLeader;
        }
        public void setNextLeader(Leader nextLeader) {
            this.nextLeader = nextLeader;
        }
        public abstract void handleLeaveRequest(LeaveRequest leave);
        
        
    }
    View Code

    领导实现类:Director、Manager、GeneralManager

    public class Director extends Leader{
    
        public Director() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public Director(String name, Leader nextLeader) {
            super(name, nextLeader);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void handleLeaveRequest(LeaveRequest leave) {
            if(leave.getLeaveDays() < 3 ){
                System.out.println("主任审批通过");
            }else{
                nextLeader.handleLeaveRequest(leave);
            }
            
        }
    
    }
    
    public class Manager extends Leader{
    
        public Manager() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public Manager(String name, Leader nextLeader) {
            super(name, nextLeader);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void handleLeaveRequest(LeaveRequest leave) {
            if(leave.getLeaveDays() < 10 ){
                System.out.println("经理审批通过");
            }else{
                nextLeader.handleLeaveRequest(leave);
            }
            
        }
    
    }
    public class GeneralManager extends Leader {
        
        public GeneralManager() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        public GeneralManager(String name, Leader nextLeader) {
            super(name, nextLeader);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void handleLeaveRequest(LeaveRequest leave) {
            if(leave.getLeaveDays() < 30 ){
                System.out.println("总经理审批通过");
            }else{
                System.out.println("莫非想辞职,想请假"+leave.getLeaveDays());
            }
        }
    
    }
    View Code

    请假条类LeaveRequest

    public class LeaveRequest {
        
        private String name;
        private Integer leaveDays;
        private String leaveReason;
        
        
        
        public LeaveRequest() {
            super();
            // TODO Auto-generated constructor stub
        }
        
        
        
        public LeaveRequest(String name, Integer leaveDays, String leaveReason) {
            super();
            this.name = name;
            this.leaveDays = leaveDays;
            this.leaveReason = leaveReason;
        }
    
    
    
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getLeaveDays() {
            return leaveDays;
        }
        public void setLeaveDays(Integer leaveDays) {
            this.leaveDays = leaveDays;
        }
        public String getLeaveReason() {
            return leaveReason;
        }
        public void setLeaveReason(String leaveReason) {
            this.leaveReason = leaveReason;
        }
        
    }
    View Code

    测试类Main

    public class Main {
        
        public static void main(String[] args) {
            LeaveRequest leave =new LeaveRequest("王五",8,"请假");
            GeneralManager general=new GeneralManager("张三",null);
            Manager manager=new Manager("李四",general);
            Director director=new Director("丁丁",manager);
            
            director.handleLeaveRequest(leave);
        }
    
    }
    View Code
  • 相关阅读:
    maven中文乱码问题——打包错误
    maven中文乱码问题——编译错误
    Vue.js 十五分钟入门
    Vue+SpringBoot+Mybatis的简单员工管理项目
    vue.js+boostrap最佳实践
    Chrome教程(二)使用ChromeDevTools命令菜单运行命令
    Chrome教程(一)NetWork面板分析网络请求
    Vue.js——vue-router 60分钟快速入门
    Vue.js——60分钟组件快速入门(下篇)
    Vue.js——60分钟组件快速入门(上篇)
  • 原文地址:https://www.cnblogs.com/xiaoliangup/p/9114746.html
Copyright © 2011-2022 走看看