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

蚌埠网站建设网站网店代运营靠谱吗

蚌埠网站建设网站,网店代运营靠谱吗,php做网站主要怎么布局,运营网站是多少小谈设计模式(25)—职责链模式 专栏介绍专栏地址专栏介绍 职责链模式分析角色分析抽象处理者(Handler)具体处理者(ConcreteHandler)客户端(Client) 优缺点分析优点123 缺点12 应用场…

小谈设计模式(25)—职责链模式

  • 专栏介绍
    • 专栏地址
    • 专栏介绍
  • 职责链模式
    • 分析
    • 角色分析
      • 抽象处理者(Handler)
      • 具体处理者(ConcreteHandler)
      • 客户端(Client)
    • 优缺点分析
      • 优点
        • 1
        • 2
        • 3
    • 缺点
        • 1
        • 2
    • 应用场景
      • 多级审批流程
      • 异常处理
      • 日志记录
    • Java程序分析
      • 首先,我们需要定义抽象处理者(Handler)接口,包含处理请求的方法和设置下一个处理者的方法:
      • 然后,我们创建具体处理者(ConcreteHandler)类,实现抽象处理者接口,并在处理请求时判断是否能够处理该请求,如果能够处理则进行处理,否则将请求传递给下一个处理者:
      • 最后,我们创建客户端(Client)类,创建处理链并将请求发送给链中的第一个处理者:
      • 输出结果
      • 分析

专栏介绍

专栏地址

http://t.csdnimg.cn/VpriY

专栏介绍

主要对目前市面上常见的23种设计模式进行逐一分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步,加油,各位。

在这里插入图片描述

职责链模式

职责链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。职责链模式将请求的发送者和接收者解耦,让多个对象都有机会处理请求,直到其中一个对象处理成功为止。

分析

在职责链模式中,通常会有一个抽象处理者(Handler)类,它定义了处理请求的接口和一个指向下一个处理者的引用。具体处理者(ConcreteHandler)类实现了抽象处理者的接口,负责处理特定的请求,如果自己无法处理,则将请求传递给下一个处理者。

角色分析

抽象处理者(Handler)

定义了处理请求的接口,并持有下一个处理者的引用。

具体处理者(ConcreteHandler)

实现了抽象处理者的接口,负责处理特定的请求,如果无法处理则将请求传递给下一个处理者。

客户端(Client)

创建处理链,并将请求发送给链中的第一个处理者。

在这里插入图片描述

优缺点分析

优点

1

降低了请求的发送者和接收者之间的耦合,请求发送者无需知道具体的处理者,只需将请求发送给第一个处理者即可。

2

可以动态地增加或修改处理链,增强了灵活性。

3

可以将请求的处理逻辑分布到多个处理者中,避免了单个处理者处理过多的责任。
在这里插入图片描述

缺点

1

请求可能无法被处理,或者没有处理者能够处理请求,需要在链的末尾设置一个默认的处理者来处理这种情况。

2

请求可能会被多个处理者都处理,需要控制好处理者之间的关系,避免重复处理。

应用场景

多级审批流程

例如请假审批、报销审批等,每个级别的领导都有机会处理请求。

异常处理

例如在一个系统中,可以通过职责链模式将不同类型的异常交给不同的处理者处理。

日志记录

例如在一个系统中,可以通过职责链模式将不同级别的日志交给不同的处理者记录。
在这里插入图片描述

Java程序分析

首先,我们需要定义抽象处理者(Handler)接口,包含处理请求的方法和设置下一个处理者的方法:

public abstract class Handler {protected Handler nextHandler;public void setNextHandler(Handler nextHandler) {this.nextHandler = nextHandler;}public abstract void handleRequest(Request request);
}

然后,我们创建具体处理者(ConcreteHandler)类,实现抽象处理者接口,并在处理请求时判断是否能够处理该请求,如果能够处理则进行处理,否则将请求传递给下一个处理者:

public class ConcreteHandlerA extends Handler {@Overridepublic void handleRequest(Request request) {if (request.getType().equals("TypeA")) {System.out.println("ConcreteHandlerA handles the request.");} else if (nextHandler != null) {nextHandler.handleRequest(request);}}
}public class ConcreteHandlerB extends Handler {@Overridepublic void handleRequest(Request request) {if (request.getType().equals("TypeB")) {System.out.println("ConcreteHandlerB handles the request.");} else if (nextHandler != null) {nextHandler.handleRequest(request);}}
}public class ConcreteHandlerC extends Handler {@Overridepublic void handleRequest(Request request) {if (request.getType().equals("TypeC")) {System.out.println("ConcreteHandlerC handles the request.");} else if (nextHandler != null) {nextHandler.handleRequest(request);}}
}

最后,我们创建客户端(Client)类,创建处理链并将请求发送给链中的第一个处理者:

public class Client {public static void main(String[] args) {Handler handlerA = new ConcreteHandlerA();Handler handlerB = new ConcreteHandlerB();Handler handlerC = new ConcreteHandlerC();handlerA.setNextHandler(handlerB);handlerB.setNextHandler(handlerC);Request requestA = new Request("TypeA");Request requestB = new Request("TypeB");Request requestC = new Request("TypeC");Request requestD = new Request("TypeD");handlerA.handleRequest(requestA);handlerA.handleRequest(requestB);handlerA.handleRequest(requestC);handlerA.handleRequest(requestD);}
}

输出结果

ConcreteHandlerA handles the request.
ConcreteHandlerB handles the request.
ConcreteHandlerC handles the request.
No handler can handle the request.

在这里插入图片描述

分析

在这个示例中,我们创建了三个具体处理者(ConcreteHandlerA、ConcreteHandlerB、ConcreteHandlerC),它们分别能够处理不同类型的请求。我们通过设置每个处理者的下一个处理者,形成了一个处理链。当客户端发送请求时,请求会从链的第一个处理者开始处理,如果某个处理者能够处理该请求,则进行处理,否则将请求传递给下一个处理者,直到找到能够处理请求的处理者为止。如果整个链都无法处理请求,则输出提示信息。

http://www.mmbaike.com/news/57540.html

相关文章:

  • 网站建设对电子商务的意义seo指导
  • 怎么建设网站怎么样seo咨询服务
  • 网站域名怎么写如何做企业网页
  • 专注合肥网站建设营销型网站分析
  • 美女做丝袜广告视频网站自动收录网
  • 定制网站制作公司怎么样网络营销心得体会1000字
  • 平台网站可以做第三方检测报告什么是交换链接
  • 南宁网站推广优化相城seo网站优化软件
  • 扬州网站商城建设价格八宿县网站seo优化排名
  • wordpress 页面很窄学seo需要学什么专业
  • 华强北网上商城百度关键词seo公司
  • 郑州新冠疫情最新消息今天淘宝怎么优化关键词排名
  • 汉口网站建设 优帮云网站建设与优化
  • 徐老师在那个网站做发视频下载微博推广效果怎么样
  • 广东企业备案 网站建设方案书网络推广好做吗?
  • 新闻网站广告怎么做如何开发一个网站
  • 安庆做网站哪个公司好web前端培训费用大概多少
  • 做网站首页文件淘宝网店怎么运营起来
  • 军人可以做网站吗微信公众号推广
  • 浙江做铁塔的公司网站百度一下百度首页
  • 游戏网站平台百度自动优化
  • 顺德网站制作案例如何站长工具权重查询
  • 淘宝网站做推广收费吗石家庄seo结算
  • 商丘网站建设模板如何接广告赚钱
  • 网站制作顶级公司百度投放广告联系谁
  • 如何做网站二维码软件测试培训费用大概多少
  • 网站企业广东省最新新闻
  • 长沙建网站企业网络营销策略案例
  • 为何只有建设银行网站打不开青岛网站建设哪家好
  • 襄阳做网站找哪家公司谷歌搜索排名