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

网站支付宝网上支付功能怎么做自己做首饰的好网站

网站支付宝网上支付功能怎么做,自己做首饰的好网站,做课程的网站,wordpress 多作者1. 什么是责任链模式 责任链模式 (Chain of Responsibility Pattern) 是一种行为型设计模式。定义如下#xff1a; 避免将一个请求的发送者与接收者耦合在一起#xff0c;让多个对象都有机会处理请求。将接收请求的对象连接成一条链#xff0c;并且沿着这条链传递请求 避免将一个请求的发送者与接收者耦合在一起让多个对象都有机会处理请求。将接收请求的对象连接成一条链并且沿着这条链传递请求直到有一个对象能够处理它为止。 2. 责任链模式的作用 将请求和请求的处理进行解耦提高代码的可扩展性。 3. 责任链模式的结构 责任链模式主要包含以下角色 抽象处理者Handler角色定义一个处理请求的接口包含抽象处理方法和一个后继连接(链上的每个处理者都有一个成员变量来保存对于下一处理者的引用)。具体处理者Concrete Handler角色实现抽象处理者的处理方法判断能否处理本次请求如果可以处理请求则处理否则将该请求转给它的后继者。客户类Client角色创建处理链并向链头的具体处理者对象提交请求它不关心处理细节和请求的传递过程。 在实际开发中责任链模式可能会增加一个责任链管理者来管理具体的处理者。 4. 责任链模式在实际开发中的应用 在 SpringBoot 中责任链模式的实践方式有多种以下是一种示例一个下单流程的多个独立检查逻辑。 4.1 实现方式1 创建 Pojo, 下单对象 public class OrderContext {private String seqId;private String userId;private Long skuId;private Integer amount;private String userAddressId;// Getters and setters }创建处理者接口 public interface OrderHandleIntercept {int sort();OrderContext handle(OrderContext context); }创建具体处理者类 Component public class RepeatOrderHandleInterceptService implements OrderHandleIntercept {Overridepublic int sort() {return 1; // 执行顺序为 1}Overridepublic OrderContext handle(OrderContext context) {System.out.println(通过seqId,检查客户是否重复下单);return context;} }Component public class ValidOrderHandleInterceptService implements OrderHandleIntercept {Overridepublic int sort() {return 2; // 执行顺序为 2}Overridepublic OrderContext handle(OrderContext context) {System.out.println(检查请求参数是否合法,并且获取客户的银行账户);return context;} }Component public class BankOrderHandleInterceptService implements OrderHandleIntercept {Overridepublic int sort() {return 3; // 执行顺序为 3}Overridepublic OrderContext handle(OrderContext context) {System.out.println(检查银行账户是否合法调用银行系统检查银行账户余额是否满足下单金额);return context;} }处理器链类 Component public class OrderHandleChainService implements ApplicationContextAware {private ListOrderHandleIntercept handleList new ArrayList();Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {MapString, OrderHandleIntercept serviceMap applicationContext.getBeansOfType(OrderHandleIntercept.class);handleList serviceMap.values().stream().sorted(Comparator.comparing(OrderHandleIntercept::sort)).collect(Collectors.toList());}public OrderContext execute(OrderContext context) {for (OrderHandleIntercept handleIntercept : handleList) {context handleIntercept.handle(context);}return context;} }进行单元测试 Autowired private OrderHandleChainService orderHandleChainService;Test public void test02() {orderHandleChainService.execute(new OrderContext()); }执行结果 通过seqId,检查客户是否重复下单 检查请求参数是否合法,并且获取客户的银行账户 检查银行账户是否合法调用银行系统检查银行账户余额是否满足下单金额4.2 实现方式2 通过注解 Order 来指定排序 Order(1) Component public class RepeatOrderHandleInterceptService implements OrderHandleIntercept {//...省略 }Order(2) Component public class ValidOrderHandleInterceptService implements OrderHandleIntercept {//...省略 }Order(3) Component public class BankOrderHandleInterceptService implements OrderHandleIntercept {//...省略 }修改 OrderHandleChainService Component public class OrderHandleChainService {Autowiredprivate ListOrderHandleIntercept handleList;public OrderContext execute(OrderContext context) {for (OrderHandleIntercept handleIntercept : handleList) {context handleIntercept.handle(context);}return context;} }4.3 实现方式3 通过定义抽象类来实现责任链设计模式 public abstract class AbstractOrderHandle {private AbstractOrderHandle next;public AbstractOrderHandle getNext() {return next;}public void setNext(AbstractOrderHandle next) {this.next next;}public abstract OrderContext handle(OrderContext orderContext);public OrderContext execute(OrderContext context) {context handle(context);if (getNext() ! null) {getNext().execute(context);}return context;} }分别创建处理类 Component Order(1) public class RepeatOrderHandle extends AbstractOrderHandle {Overridepublic OrderContext handle(OrderContext context) {System.out.println(通过seqId检查客户是否重复下单);return context;} }Component Order(2) public class ValidOrderHandle extends AbstractOrderHandle {Overridepublic OrderContext handle(OrderContext context) {System.out.println(检查请求参数是否合法并且获取客户的银行账户);return context;} }Component Order(3) public class BankOrderHandle extends AbstractOrderHandle {Overridepublic OrderContext handle(OrderContext context) {System.out.println(检查银行账户是否合法调用银行系统检查银行账户余额是否满足下单金额);return context;} }创建一个责任链管理器 Component public class OrderHandleManager {Autowiredprivate ListAbstractOrderHandle orderHandleList;PostConstructpublic void initChain() {int size orderHandleList.size();for (int i 0; i size; i) {if (i size - 1) {orderHandleList.get(i).setNext(null);} else {orderHandleList.get(i).setNext(orderHandleList.get(i 1));}}}public OrderContext execute(OrderContext context) {OrderContext execute orderHandleList.get(0).execute(context);return context;} }测试 Autowired private OrderHandleManager orderHandleManager;Test public void test02() {orderHandleManager.execute(new OrderContext()); }运行结果与预期一致 通过seqId检查客户是否重复下单 检查请求参数是否合法并且获取客户的银行账户 检查银行账户是否合法调用银行系统检查银行账户余额是否满足下单金额5. 职责链模式总结 职责链模式Chain of Responsibility Pattern是一种行为设计模式它允许多个对象处理同一个请求从而避免请求的发送者和接收者之间的耦合关系。这种模式为请求的处理提供了一条清晰的链每个对象可以决定是否处理该请求或者将请求转发给链中的下一个对象。 职责链模式的优点 降低耦合度发送者和接收者之间没有直接的联系降低了系统组件之间的耦合度。增强灵活性可以在运行时动态地添加或移除职责链中的处理对象提高了系统的灵活性和可扩展性。明确责任分配每个处理对象只关注自己的职责范围责任分配更加明确。 职责链模式的缺点 请求处理不确定性不能保证请求一定会被处理如果链中的所有对象都不处理请求请求将被忽略。系统性能影响请求可能需要通过较长的链进行传递可能会对性能产生影响。客户端复杂性增加客户端可能需要了解整个职责链的配置增加了客户端的使用复杂性。 职责链模式的使用场景 多个对象处理请求当一个请求需要多个对象依次处理时可以使用职责链模式。处理逻辑不明确在运行时根据请求的类型动态选择处理对象不希望客户端知道具体的处理逻辑。 职责链模式的实现可以通过组合多个具体处理者对象并设置它们的后继者形成一个处理链。当请求发出时链中的每个对象依次判断是否能够处理该请求如果可以处理则执行处理操作否则将请求转发给链中的下一个对象。 这种模式在实际应用中非常广泛例如在GUI应用程序的事件处理、工作流审批流程、过滤器链等场景中都有应用。通过使用职责链模式可以提高系统的模块化和灵活性同时降低组件之间的依赖关系。
http://www.hkea.cn/news/14313950/

相关文章:

  • 公司企业网络推广优化网站是什么意思
  • 免费注册的网站电子商务企业网站制作
  • 网站建设 seo商情网打车软件app开发
  • 心悦会员免做卡网站爱站网
  • 伍佰亿搜索引擎网站系统门户网站建设 交流发言
  • 苏州网站制作排名优化几十万做网站平台
  • 红色网站呢怎样在赶集微网站做微招聘
  • 网站开发常用的开发工具企业邮箱怎么申请账号
  • 做网站学注册保险代理公司需要什么条件
  • 邯郸企业网站建设费用深圳市深企在线技术开发有限公司
  • 用图片做简单网站网络营销的主要传播渠道是
  • 云主机重装系统后网站重新部署吗做推文网站
  • 隆尧网站生活信息网站建设
  • 免费开源企业网站程序wordpress邮箱插件
  • 上海黄金网站设计浅谈旅游网站的规划与建设
  • 网站开发系统计划书wordpress 搭建网站
  • 怎么备份网站模板网站建设为什么要全款
  • 在一个网站上面发布广告怎么做做网站实验报告
  • 演讲网站开发背景营销推广型网站价格
  • 梅林做网站wordpress 宅男猫网站
  • 如何在建设银行网站查验回单静态网站更新文章麻烦
  • 网站设计实训心得做网站 租服务器
  • 怎么查询公司网站备案网站备案 电信
  • 做外贸什么网站比较好做无锡个人网站制作
  • a站是啥wordpress模版post.php
  • 楚雄网站开发微软网站做u盘启动教程
  • 免费简单门户网站开发网站页面策划模板下载
  • 汕头个人网站建设图片转链接在线转换
  • 适合html初学者做的网站个人主页怎么找
  • 建网站哪个公司好厦门模板建站系统