博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式14-责任链模式
阅读量:5075 次
发布时间:2019-06-12

本文共 2129 字,大约阅读时间需要 7 分钟。

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) ;                    }}

 

转载于:https://www.cnblogs.com/liaokailin/p/3803487.html

你可能感兴趣的文章