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

我想找个做代理的网站郑州知名做网站公司

我想找个做代理的网站,郑州知名做网站公司,开发者选项在哪小米,摄影师个人网站怎么做什么是职责链模式 职责链模式是避免请求发送者与接受者耦合在一起,让多个对象都可以接受到请求,从而将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理为止。     职责链模式包含以下几个角色:    …

什么是职责链模式

    职责链模式是避免请求发送者与接受者耦合在一起,让多个对象都可以接受到请求,从而将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理为止。
    职责链模式包含以下几个角色:
        Handler(抽象处理者):定义处理请求的接口,一般是抽象类。由于不同的具体处理类处理请求的方式不同,因此在其中定义抽象处理请求的方法。因为每一个处理这的下家还是处理者,因此在抽象处理者中定义一个抽象处理者类型的对象作为下家的引用。
        ConcreteHandler(具体处理者):是抽象处理者的子类,实现了抽象处理者中定义的抽象方法用于处理用户请求。具体处理者有两大作用:一是处理请求,不同的具体处理者以不同的形式实现抽象处理者的方法。二是转发请求,当前处理类可将请求转发给下家。
    职责链模式可以分为纯的职责链模式和不纯的职责链模式:
        纯的职责链模式:要求具体处理者只能在两个行为中选择一个,要么承担全部责任,要么将责任转发给下家,不允许出现一个具体处理者承担了一部分或全部责任还要将责任转发给下家。
        不纯的职责链模式:允许请求被一个具体处理者处理部分或全部后在转发给下家,也可以不被任何处理者所处理。

职责链模式的优缺点

优点

  1. 一个对象无需知道是其他哪个对象处理请求,降低了系统耦合。
  2. 请求处理对象只需维护一个指向下家的的引用,简化对象的相互连接。
  3. 给对象分派职责时更加灵活,可以通过在运行时对该链进行动态增加或修改改变处理请求的职责。
  4. 增加新的处理请求时无需修改代码,符合开闭原则。

缺点

  1. 不保证每个请求都会被处理。
  2. 太长的职责链涉及更多的处理对象,会降低系统性能。
  3. 可能会造成循环调用陷入死循环。

职责链模式的应用场景

  1. 有多个对象可以处理同一个请求,具体哪个对象处理在运行时决定。
  2. 不明确接受者的情况下,向多个对象中的一个提交请求。
  3. 可动态指定一组对象处理请求,客户端可以动态创建职责链处理请求,还可以改变处理请求的顺序。

职责链模式的案例

// 请求对象
public class PurchaseRequest implements Serializable {private int type = 0;private float price = 0.0f;private int id = 0;}// 抽象处理者
public abstract class Approver {Approver approver;String name;public Approver(String name) {this.name = name;}public void setApprover(Approver approver) {this.approver = approver;}public abstract void processRequest(PurchaseRequest purchaseRequest);}// 具体处理者
public class CollegeApprover extends Approver {public CollegeApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() < 5000 && purchaseRequest.getPrice() <= 10000) {System.out.println(" 请求编号 id= " + purchaseRequest.getId() + " 被 " + this.name + " 处理");} else {approver.processRequest(purchaseRequest);}}
}public class DepartmentApprover extends Approver {public DepartmentApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() <= 5000) {System.out.println(" 请求编号 id= " + purchaseRequest.getId() + " 被 " + this.name + " 处理");} else {approver.processRequest(purchaseRequest);}}}public class SchoolMasterApprover extends Approver {public SchoolMasterApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() > 30000) {System.out.println(" 请求编号 id= " + purchaseRequest.getId() + " 被 " + this.name + " 处理");} else {approver.processRequest(purchaseRequest);}}
}public class ViceSchoolMasterApprover extends Approver {public ViceSchoolMasterApprover(String name) {super(name);}@Overridepublic void processRequest(PurchaseRequest purchaseRequest) {if (purchaseRequest.getPrice() < 10000 && purchaseRequest.getPrice() <= 30000) {System.out.println(" 请求编号 id= " + purchaseRequest.getId() + " 被 " + this.name + " 处理");} else {approver.processRequest(purchaseRequest);}}
}

在这里插入图片描述

职责链模式在源码中的应用

org.apache.ibatis.plugin.InterceptorChain

// 在mybatis源码中,添加拦截器就是使用责任链模式
// pluginAll 通过这个方法可以添加定义好的拦截器实现
// 通过遍历 getInterceptors 就可以去请求每一个定义好的拦截器类
public class InterceptorChain {private final List<Interceptor> interceptors = new ArrayList<>();public Object pluginAll(Object target) {for (Interceptor interceptor : interceptors) {target = interceptor.plugin(target);}return target;}public void addInterceptor(Interceptor interceptor) {interceptors.add(interceptor);}public List<Interceptor> getInterceptors() {return Collections.unmodifiableList(interceptors);}}

http://www.yayakq.cn/news/71865/

相关文章:

  • WordPress侧边按钮插件白帽seo
  • 微信建设网站网页链接下载
  • 设计素材网站模板网站名词解释
  • 企业做网站有什么好处好看网站
  • 如何用服务器搭建网站开发电商网站多少钱
  • 高端大气网站欣赏wordpress自定义界面
  • 怎么知道网站是什么开源做的企业做网站和开展电子商务的好处
  • 景区网站建设的好处广告传媒网站模板
  • 网站建设网银开通网上商店有哪些特点
  • 敦煌网站做外贸怎样百度云网盘资源搜索引擎入口
  • 怎么做谷歌收录的网站吗一门app开发平台
  • 蛋糕店网站建设中建八局第一建设公司网站
  • 兴宁网站设计wordpress不能外部链接
  • 专门做衬衣的网站wordpress内嵌网页
  • 做美食网站视频石家庄建设厅网站首页
  • 深圳网站建设公司企业西安手机网站制作公司
  • 网站群 主要功能民非单位年检那个网站做
  • 怎样不用代码就能建网站清远市企业网站seo
  • 深圳做英文网站做水电到哪个网站找信息
  • 营销创意网站媒体软文发稿
  • 淮北市网站建设建设银行信用卡中心网站首页
  • c 语言网站建设android开发培训
  • 做网站是什么世界工厂采购网app
  • 成都微网站廊坊兼职网站建设
  • 法学院网站建设建议手机端网站外部链接如何去优化
  • 网站首页收录突然没有了贵阳市城乡建设厅网站
  • 高端的响应式网站建设公司太原seo快速排名怎么样
  • 电脑怎样做轰炸网站绵阳高端网站建设
  • 江阴市建设局网站管理通道自适应型网站建设哪家好
  • linux做网站好微分销商城网站建设