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

    1. 概念

        使多个对象都有机会处理请求,从而避免请求的送发者和接收者之间的耦合关系  

    2. 案例

      

    package org.demo.chainofresponsibility.demo;
    /**
     * 使多个对象都有机会处理请求,
     * 从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,
            并沿着这条链传递该请求,直到有一个对象处理它为止
     * Function : 
     * @author : Liaokailin
     * CreateDate : 2014-3-7
     * version : 1.0
     */
    
    interface Request{
        void myRequest() ;
    }
    
    class DimissionRequest implements Request{
    
        @Override
        public void myRequest() {
            System.out.println("离职请求") ;
        }
    }
    
    class AddMoneyRequest implements Request{
        public void myRequest(){
            System.out.println("加薪请求") ;
        }
    }
    
    interface RequestHandler{
        public void handle(Request request) ;
    }
    
    class HRRequestHandler implements RequestHandler{
        @Override
        public void handle(Request request) {
            if(request instanceof DimissionRequest){
                System.out.println("人力资源审批中..") ;
            }
            System.out.println("人力资源审批结束") ;
        }
    }
    
    class PMRequestHandler implements RequestHandler{
        RequestHandler rh ; 
        public PMRequestHandler(RequestHandler rh){
            this.rh = rh ;
        }
        @Override
        public void handle(Request request) {
            boolean result = false ;
            if(request instanceof AddMoneyRequest){
                System.out.println("项目经理审批中...") ;
                result = true ;
            }
            if(result){ //转交到部门经理
                rh.handle(request) ;
            }
        }
        
    }
    
    class DMRequestHandler implements RequestHandler{
        /*RequestHandler rh  ;
        public DMRequestHandler(RequestHandler rh){
            this.rh = rh ;
        }*/
        @Override
        public void handle(Request request) {
            if(request instanceof AddMoneyRequest){
                System.out.println("部门经理审批中...") ;
            }
            System.out.println("部门经理审批结束 加薪一万块.") ;
        }
    }
    public class Demo01 {
        public static void main(String args[]){
            Request dimissionRequest = new DimissionRequest() ;
            RequestHandler rh01 = new HRRequestHandler() ;
            rh01.handle(dimissionRequest) ;
            
            Request addMoenyRequest = new AddMoneyRequest() ;
            RequestHandler rh02 = new PMRequestHandler(new DMRequestHandler()) ;
            rh02.handle(addMoenyRequest) ;
            
            
        }
    }
  • 相关阅读:
    记录移动端原生开发基础样式
    windows关闭打开应用的时候的安全弹窗
    thinkPad触控板手势安装
    git修改账号密码
    ssh免密登录失效处理
    xxl-rpc remoting error(Connection refused (Connection refused)), for url : http://xxxxxx:19997/run
    utools好用插件分享
    Android Studio打包apk闪退处理
    maven下载jar包失败处理
    微信文件下载位置
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3803487.html
Copyright © 2011-2022 走看看