JAVA架构师之路十六:设计模式之责任链模式

本文介绍了责任链模式,它是一种行为型设计模式,用于在运行时动态决定请求的处理对象。通过创建处理请求的节点对象并形成链路,请求会逐个传递直到被处理。文中以登录案例阐述了责任链模式的应用,包括常规的登录验证流程以及如何优化链路结构以简化操作。责任链模式的优点包括解耦请求与处理,提供链式传递,但也需要注意可能的性能问题和循环引用导致的死循环。
摘要由CSDN通过智能技术生成

JAVA架构师之路十五:设计模式之策略模式

人生的游戏不在于拿了一副好牌,而在于怎样去打好坏牌,世上没有常胜将军,勇于超越自我者才能得到最后的奖杯。

1. 责任链模式

定义

责任链模式是将链中每一个节点看作是一个对象,每个节点请求处理的请i去均不同,且内部自动维护一个下一个节点对象。当一个请求从链式的首段发出时,会沿着链的路径依次传递给每一个节点对象。直至有对象处理这个请求为止。

属于行为型模式

适用场景

多个对象可以处理同一个请求,但具体由哪个对象处理,则在运行时动态决定。

在不明确指定接收者的情况下,向多个对象中的一个提交一个请求

可动态指定一组对象处理请求。

优点

将请求与处理解耦

请求处理者(节点对象)只需关注自己感兴趣的请求进行处理即可,对于不感兴趣的请求,直接转发给下一级节点对象;

具备链式传递处理请求功能,请求发送者无需知晓链路结构,只需等待请求处理结果

链路结构灵活,可以通过改变连句结构动态地新增或者删见责任;

易于扩展新的请求处理类(节点),符合开闭原则

缺点

责任链太长或者处理时间过长,会影响整体性能

如果节点对象存在循环引用时,会造成死循环,导致系统崩溃

2. 登陆案例

大部分的网站都需要登陆,一般的登陆流程都需要先校验输入的用户名密码是否合法,再者校验用户是否存在,然后再校验权限等等。

public abstract class Handler {
   

    protected Handler next;

    public void next(Handler next) {
   
        this.next = next;
    }

    public abstract void doHandler(Member member);
    
}
public class ValidateHandler extends Handler {
   

    @Override
    public void doHandler(Member member) {
   
        if (StringUtils.isBlank(member.getLoginName()) || StringUtils.isBlank(member
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值