• 设计模式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) ;
            
            
        }
    }
  • 相关阅读:
    第二周学习总结
    2019春总结作业
    第十二周作业
    第十一周作业
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    第五周课程总结与报告
    Java第四周编程总结
  • 原文地址:https://www.cnblogs.com/liaokailin/p/3803487.html
Copyright © 2020-2023  润新知