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("========="); } }

  • 相关阅读:
    UVA 11991 Easy Problem from Rujia Liu(map,vector的使用)
    UVA 11995 I Can Guess the Data Structure! (STL应用)
    HDU 2795 Billboard(线段树,单点更新)
    HDU 1394 Minimum Inversion Number (线段树,单点更新)
    UVA 11827 Maximum GCD(读入技巧,stringstream的使用)
    contest 2 总结
    Const 1 总结
    开始进行大量题目练习
    函数式线段树的个人理解
    poj 2318 TOYS
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/2515543.html
Copyright © 2011-2022 走看看