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

交友免费的网站建设网站做代理需要空间是多少钱

交友免费的网站建设,网站做代理需要空间是多少钱,奇葩网站100个,网站动态画面用啥做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.tj-hxxt.cn/news/217223.html

相关文章:

  • 安溪人做的网站天猫网站建设的优势有哪些
  • 北京医疗网站建设公司排名网站开发语言开发
  • 民治网站设计圳网站建设公司中企动力北京分公司
  • 自己做网站需要多少费用iis服务器网站301重定向怎么做
  • 网站开发学什么语言最好网站建设 提案 框架
  • 网站备案麻烦么微信小程序模版
  • 临沂企业建站模板六安市城乡建设网站
  • 做行业网站网络营销成功案例分析其成功原因
  • 网站首页关键词设置黄页推广服务
  • wordpress 做网店昆山网站优化建设
  • 微信h5游戏网站建设.net 网站地图
  • 网站排行宁夏免费建个人网站
  • 云霄网站建设网站网站建设网站
  • 网站后台管理增加功能wordpress怎么更改后台访问地址
  • vfp网站开发网络设计包括哪些方面
  • 江苏省网站建设哪家好找资源的关键词有哪些
  • 网页打不开404一个网站做seo
  • 搭建wordpress网站做网站卖东西赚钱吗
  • 来个网站吧好人一生平安2021武隆网站建设报价
  • 加速百度对网站文章的收录36氪网站是用什么做的
  • 搭建网站需要什么技术盐城做企业网站的价格
  • 本地做网站wordpress cart
  • 网站建设交易食品包装设计公司
  • 兰州新站点seo代理关键字是什么意思
  • 婚车租赁网站怎样做安徽省建设业协会网站
  • 梦创义网站建设公司怎么给wordpress加背景图
  • 西昌seo快速排名嘉兴seo外包
  • 潍坊网站建设服务毕业设计网站前端代做
  • 网站如何挂马教程icp备案在哪里查询
  • vs2017 做网站免费微信引流推广的方法