当前位置: 首页> 房产> 市场 > 深圳建设工程网_建设银行网站用户名是多少_外包公司的优势和劣势_seo百度关键词优化

深圳建设工程网_建设银行网站用户名是多少_外包公司的优势和劣势_seo百度关键词优化

时间:2025/7/12 20:38:05来源:https://blog.csdn.net/m0_37635053/article/details/143062830 浏览次数:0次
深圳建设工程网_建设银行网站用户名是多少_外包公司的优势和劣势_seo百度关键词优化

设计模式之责任链模式

责任链模式将链中每一个节点看着一个对象,每个节点处理不同的请求,且内部维护着下一个节点的对象,当一个请求从链式的首端出发,会沿著责任链预设的路径依次传递到每一个节点对象,直至被链中的某一个对象处理为止。

适用场景

  • 当有多个对象可以处理同一个请求,但具体处理者在运行时确定。

  • 当需要动态指定处理请求的对象时,可以使用责任链模式。

类图

在这里插入图片描述

代码演示

step 1 写一个抽象类,作为父类
public abstract class Handler {protected Handler handler;public void next(Handler handler) {this.handler = handler;}public abstract void doHandle(UserInfo userInfo,List<String> list);
}
step 2 写3个实现类

AuthHandler 类

@Slf4j
@Service
public class AuthHandler extends Handler  {@Overridepublic void doHandle(UserInfo userInfo,List<String> list) {log.info("恭喜您来到王者荣耀");list.add("恭喜您来到王者荣耀");}
}

LoginHandler类

@Slf4j
@Service
public class LoginHandler  extends Handler {@Overridepublic void doHandle(UserInfo userInfo,List<String> list) {if(!userInfo.getUserName().equals("张三")||!userInfo.getPassword().equals("666666")){log.info("登录失败");return;}log.info("登录成功");list.add("登录成功");handler.doHandle(userInfo,list);}
}

ValidateHandler 类

@Slf4j
@Service
public class ValidateHandler  extends Handler{@Overridepublic void doHandle(UserInfo userInfo,List<String> list) {if(StringUtils.isBlank(userInfo.getUserName())||StringUtils.isBlank(userInfo.getPassword())){log.error("账号密码不能为空………………");return;}log.info("校验通过");list.add("校验通过");handler.doHandle(userInfo,list);}
}
step 3 责任链类

这里是为了把对象组装成链

@Slf4j
@Service
public class HandleService {@Resourceprivate AuthHandler authHandler;@Resourceprivate LoginHandler loginHandler;@Resourceprivate ValidateHandler validateHandler;public void login(String username, String password) {//通过此方法,会让ValidateHandler 类拥有一个指向loginHandler的Handler对象validateHandler.next(loginHandler);//通过此方法,会让LoginHandler类拥有一个指向authHandler的Handler对象loginHandler.next(authHandler);UserInfo userInfo = new UserInfo();userInfo.setUserName(username);userInfo.setPassword(password);List<String> list = new ArrayList<>();validateHandler.doHandle(userInfo,list);log.info("list的内容:{}",list);}
}

结束语

当业务代码调用HandleService
的login方法时,就会按照我们预设的顺序,validateHandler->loginHandler->authHandler依次调用方法,这里的参数list就是演示如何把结果收集

关键字:深圳建设工程网_建设银行网站用户名是多少_外包公司的优势和劣势_seo百度关键词优化

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: