第24章《职责链模式》

前端之家收集整理的这篇文章主要介绍了第24章《职责链模式》前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

错误。

增加or修改处理一个请求的结构。增强了给对象指派职责的灵活性。

import java.util.ArrayList;

/**

  • @Author: cxh

  • @CreateTime: 18/1/27 19:40

  • @ProjectName: JavaBaseTest
    */
    public class Client{
    public static void main(String[] args) {
    ManagerLev1 lev1=new ManagerLev1();
    ManagerLev2 lev2=new ManagerLev2();
    ManagerLev3 lev3=new ManagerLev3();
    lev1.setHandler(lev2);
    lev2.setHandler(lev3);

     Request request1=new Request("李静",3);
     Request request2=new Request("黎明",10);
     Request request3=new Request("周青",4);
     Request request4=new Request("纪静",1);
     ArrayList<Request> list=new ArrayList<>();
     list.add(request1);
     list.add(request2);
     list.add(request3);
     list.add(request4);
     list.stream().forEach(request -> lev1.getResult(request));

    }
    }



/**

  • @Author: cxh
  • @CreateTime: 18/1/27 19:41
  • @ProjectName: JavaBaseTest
    */
    public abstract class Handler{
    protected Handler handler;
    Handler(){}
    public void setHandler(Handler handler) {
    this.handler = handler;
    }
    abstract void getResult(Request request);
    }


/**

  • @Author: cxh

  • @CreateTime: 18/1/27 19:43

  • @ProjectName: JavaBaseTest
    */
    public class ManagerLev1 extends Handler{

    @Override
    void getResult(Request request) {
    String name=request.getName();
    int days=request.getDays();
    if(days<=2){
    System.out.println(name+"请假"+days+"天的请求得到批准! and 请假级别:lev1");
    }else{
    super.handler.getResult(request);
    }
    }
    }



/**

  • @Author: cxh
  • @CreateTime: 18/1/27 19:43
  • @ProjectName: JavaBaseTest
    */
    public class ManagerLev2 extends Handler {
    @Override
    void getResult(Request request) {
    String name=request.getName();
    int days=request.getDays();
    if(days<=5){
    System.out.println(name+"请假"+days+"天的请求得到批准! and 请假级别:lev2");
    }else{
    super.handler.getResult(request);
    }
    }
    }


/**

  • @Author: cxh
  • @CreateTime: 18/1/27 19:43
  • @ProjectName: JavaBaseTest
    */
    public class ManagerLev3 extends Handler {
    @Override
    void getResult(Request request) {
    String name=request.getName();
    int days=request.getDays();
    System.out.println(name+"请假"+days+"天的请求得到批准! and 请假级别:lev3");
    }
    }


/**

  • @Author: cxh

  • @CreateTime: 18/1/27 19:45

  • @ProjectName: JavaBaseTest
    */
    public class Request {
    private String name;
    private int days;

    Request(String name,int d) {
    this.name = name;
    this.days = d;
    }

    public String getName() {
    return name;
    }

    public int getDays() {
    return days;
    }
    }

参考书籍:《大话设计模式》-程杰

猜你在找的设计模式相关文章