当前位置: 首页 > news >正文

海口模板建站平台网站接入商

海口模板建站平台,网站接入商,wordpress 商品导航菜单,全网营销推广有哪些平台责任链模式的定义是:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。 责任链模式适合于请求需要经过多个处理器,并…

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

责任链模式适合于请求需要经过多个处理器,并被其中一个或多个处理器执行。

«interface»
Handler
+setNext(Handler)
+handler(Request)
ConcreteHandler
next:Handler
+setNext(Handler)
+handler(Request)

代码实现:

// 抽象处理器  
public abstract class Handler {  private Handler next;  // 初始化处理链  public static Handler init(Handler... handlers) {  Handler first = handlers[0];  for (int i = 1; i < handlers.length; i++) {  first.setNext(handlers[i]);  first = handlers[i];  }  return handlers[0];  }  public void setNext(Handler handler) {  next = handler;  }  // 处理当前请求  public abstract void handle(Request request);  //处理下一个请求  protected void nextHandle(Request request) {  if (next != null) {  next.handle(request);  }  }  
}
public class HandlerA extends Handler {  @Override  public void handle(Request request) {  request.addName("HandlerA");  nextHandle(request);  }  
}public class HandlerB extends Handler {  @Override  public void handle(Request request) {  request.addName("HandlerB");  nextHandle(request);  }  
}
// 请求
@Data  
public class Request {  private final List<String> names = new ArrayList<>();  public void addName(String name) {  names.add(name);  }  
}
public static void main(String[] args) {  Handler handler = Handler.init(new HandlerA(), new HandlerB());  Request request = new Request();  handler.handle(request);  System.out.println(request.getNames());  
}  

上面的例子跟链表相像,一个处理器保持有下一个处理器的引用。

另一种实现变体是处理器的引用统一由处理器链管理,处理器链决定处理的顺序。

public interface Handler {  void handle(Request request,HandlerChain chain);  
}
public class HandlerA implements Handler{  @Override  public void handle(Request request, HandlerChain chain) {  request.addName("HandlerA");  chain.handle(request);  }  
}public class HandlerB implements Handler{  @Override  public void handle(Request request, HandlerChain chain) {  request.addName("HandlerB");  chain.handle(request);  }  
}
public class HandlerChain {  private List<Handler> handlers = new ArrayList<>();  // 当前指针  int cur=0;  public void addHandler(Handler handler) {  handlers.add(handler);  }  public void handle(Request request){  if(cur>=handlers.size()){  return;  }  Handler handler = handlers.get(cur++);  handler.handle(request, this);  }  
}
public static void main(String[] args) {  HandlerChain chain=new HandlerChain();  chain.addHandler(new HandlerA());  chain.addHandler(new HandlerB());  Request request=new Request();  chain.handle(request);  System.out.println(request.getNames());  
}

责任链变化的地方是处理的流程。

优点是:

  1. 处理的顺序可以随时修改
  2. 方便新增或删除处理者
http://www.yayakq.cn/news/479192/

相关文章:

  • 中网互联网站建设网站平台搭建和维护需要什么
  • 网站改版的费用可以做产品推广的网站
  • 如何查一个网站的备案物流网站建设计划书
  • 做个一般的网站要多少钱大连金州
  • 做视频类网站需要哪些许可证湖南中高风险地区
  • 泊头网站优化网站开发步骤
  • 教育平台网站开发域名 空间 网站
  • 专题探索网站开发模式特点网站的展现形式
  • 做微商网站发帖免费教程工商营业执照年检入口
  • 重庆自助建网站企企业网站建设部门的职责
  • php免费企业网站模板wordpress显示选项解决方法
  • 肇庆微网站网页设计个人网站怎么做
  • 卧龙区2015网站建设价格电商网站竞价推广策略
  • shopex网站备份百度号码查询平台
  • 网站建设属于技术开发合同吗手机搭建网站工具
  • 深圳网站建设大公司seo编辑是干什么的
  • 西安SEO网站建设小程序模板图
  • 做任务的阅币漫画网站仙居网站制作
  • 吉林市网站建设内蒙古自治区工程建设网站
  • 上海企业网站建设公司名珠海网站建设制作哪家专业
  • 北京建设协会网站首页宁波网站建站
  • 帮助人做ppt的网站公司旅游视频网站模板免费下载
  • 响应式网站源码下载官网网站建设
  • 摄影网站设计方案门户网站快速制作
  • 企业网站打不开什么原因佛山专业网站制作公司
  • 西安网站建设咪豆国家企业信用信息系统官网登录
  • 网站建设 套格式廊坊专业网站建设
  • 网站备案信息更改seo公司怎么推广宣传
  • 网站制作开发公司个人公司网页如何设计
  • 常用网站推广方式有哪些廊坊网站建设兼职