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

设计模式-责任链, 责任链+ 模板方法模式相结合

责任链,火车一样,一节一节串起来。类似
a.setNext(b);
b.setNext©;
c.setNext(d);

这里以多步校验做举例,正常方法中要写好多个if else

定义一个接口

package com.example.chain;/*** 订单校验**/
public interface OrderCreateValidator {/*** 设置下一个校验器** @param nextValidator*/public void setNext(OrderCreateValidator nextValidator);public OrderCreateValidator getNext();/*** 校验** @param request* @throws OrderException 订单异常*/public void validate(OrderCreateRequest request) throws OrderException;
}

类实现接口

package com.example.chain.orgin;import com.example.chain.OrderCreateRequest;
import com.example.chain.OrderCreateValidator;
import com.example.chain.OrderException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserValidator2 implements OrderCreateValidator {private OrderCreateValidator nextValidator;@Overridepublic void setNext(OrderCreateValidator next) {this.nextValidator = next;}@Overridepublic OrderCreateValidator getNext() {return nextValidator;}@Overridepublic void validate(OrderCreateRequest request) throws OrderException {System.out.println("UserValidator doValidate");}}
package com.example.chain.orgin;import com.example.chain.OrderCreateRequest;
import com.example.chain.OrderCreateValidator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class Goo
http://www.dtcms.com/a/263818.html

相关文章:

  • 抽奖概率-数值练习题
  • AR衍射光波导设计遇瓶颈,OAS 光学软件来破局
  • 【Golang面试题】Go结构体的特点,与其它语言的区别
  • 学习昇腾开发的第11天--主要接口调用流程
  • 逐步构建高性能http服务器及聊天室服务器
  • 青否数字人直播再创新纪录!“人工智能+消费”开新篇?zhibo175
  • ABB CH-3185 3 bhl 000986 p 1006 ab ability 800 xa自动化系统
  • 【V6.0 - 听觉篇】当AI学会“听”:用声音特征捕捉视频的“情绪爽点”
  • 【开源项目】一款真正可修改视频MD5工具视频质量不损失
  • 【第二章:机器学习与神经网络概述】04.回归算法理论与实践 -(3)决策树回归模型(Decision Tree Regression)
  • UE5.6 官方文档笔记 [1]——虚幻编辑器界面
  • Python 单例模式与魔法方法:深度解析与实践应用
  • MySQL允许root用户远程连接
  • PDFBox + Tess4J 从PDF中提取图片OCR识别文字
  • 探秘阿里云Alibaba Cloud Linux:云时代的操作系统新宠
  • C语言学习笔记:深入解析结构体数组(附代码实践)
  • Qt QTableWidget多行多列复制粘贴
  • Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议
  • 安全左移(Shift Left Security):软件安全的演进之路
  • Spring Boot 2 多模块项目中配置文件的加载顺序
  • 智能交通信号灯
  • Django打造智能Web机器人控制平台
  • HarmonyOS应用开发高级认证知识点梳理 (三)状态管理V2装饰器核心规则
  • android车载开发之HVAC
  • 笔记本电脑怎样投屏到客厅的大电视?怎样避免将电脑全部画面都投出去?
  • 【蓝牙】Linux Qt4查看已经配对的蓝牙信息
  • 05【C++ 入门基础】内联、auto、指针空值
  • 算法-每日一题(DAY12)最长和谐子序列
  • 为Mkdocs网站添加Google广告
  • CRMEB开源商城系统Windows+IIS环境安装配置详解