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

    责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并顺着这条链传递该请求,直到有一个对象处理它为止。以下是例子:

    //接口Request拥有getType与execute方法 

    public class RequestStudent implements Request{

    public String getType() {
    return "StudentRequest";
    }
    public void execute() {
    System.out.println("[RequestStudent] :\t Students request has been accepted!");
    }
    }

    //handlerRequest是接口Handler 的方法

    public class HandlerStudent implements Handler {

    private Handler nextSuccessor;

    public HandlerStudent(Handler nextSuccessor){

    this.nextSuccessor = nextSuccessor; }

    public void handlerRequest(Request request) {

    // 处理StudentRequest

    if(request.getType().equalsIgnoreCase("StudentRequest")){

    System.out.println("HandlerStudent begin to response StudentRequest;");

    request.execute(); }

    else{

    //把请求传递给其他受理者

    if(this.nextSuccessor!=null){

    nextSuccessor.handlerRequest(request); }

    else{

    System.out.println("request[" + request.getType() + "] has not handler to deal!"); } } } }

    //测试类 

    public class Test { public static void main(String[] args) {  

    Handler handler = new HandlerStudent(new HandlerTeacher(new HandlerSchoolmaster(null)));

    Request studentReq = new RequestStudent();

    Request teacherReq = new RequestTeacher();

    Request schoolmasterReq = new RequestSchoolmaster();

    Request presidentReq = new RequestPresident();

    //传入student request

    handler.handlerRequest(studentReq);

    System.out.println("=========");

    //传入teacher request

    handler.handlerRequest(teacherReq);

    System.out.println("=========");

    //传入schoolmaster request

    handler.handlerRequest(schoolmasterReq);

    System.out.println("=========");

    //传入president request

    handler.handlerRequest(presidentReq);

    System.out.println("========="); } }

  • 相关阅读:
    购买电脑注意事项
    这个题用堆排序还是直接插入法呢?
    2011新历年最后一天了
    VC中对于Dialog,OnCreate()和OnInitDialog()是什么关系
    英语问题,(有些答案不对,不对的请说一声)
    尝鲜之在Github上搭建Octopress博客
    nodejs+express+ejs+mongoose实例
    Hadoop问题小记
    Storm资料汇总
    C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue 泛型
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/2515543.html
Copyright © 2011-2022 走看看