• JAVA设计模式之责任链模式


    今天给大家带来的是JAVA的设计模式。
    有人会问:什么是JAVA? 什么又是设计模式呢?
    勇敢老师最喜欢的一句话: JAVA是内功,设计模式是格斗招式,当只有内功,那么再好的内功也只是蛮力,只有格斗招式,那么也就成了花拳绣腿。
    如何把握两者?

       一句话 具体情况具体分析
       
       那么今天给大家带来的JAVA常用的设计模式之一:职责链模式(责任链模式)
       首先简单地认识下 我们的是小伙伴 职责链。
       
       职责链模式[Chain of Responsibility]:
        责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。
       请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,
       这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。(概念解释来源于:阎宏博士的《JAVA与模式》)
       
       
      很多伙伴们可能对这段该概念很少模糊, 简单说明下:当某一个业务对象需要完成 任务A B C D 。。。 等多个任务的时候,那么处理方法是就将任务先交给 A ,待完成后再教于B .... 依次下去。

      责任链:任务处理对象
      
     


    当如任务分配到到责任链上时候,就会出现这样的优势局面
     

    1. 责任的分担。每个类只需要处理自己该处理的工作(不该处理的传递给下一个对象完成),明确各类的责任范围,符合类的最小封装原则。
    2. 可以根据需要自由组合工作流程。如工作流程发生变化,可以通过重新分配对象链便可适应新的工作流程。
    3. 类与类之间可以以松耦合的形式加以组织。

     
    当然也出了不利的局面:在处理多任务是以链的模式实现对象的传递,不同的实现方式会影响处理响应的速度。
     
    我们简单的任务认识了下 责任链的概念,接下来我们一起码代码,感受下代码的艺术。
     
    我们基于JAVA语言的实现的简单的责任链。
    场景: 设计模拟商场打折,导购员只能 提供 100元以内的优惠 经理提供500元以内的优惠
     
    目标:

    1. 设计一个抽象处理类 AbstractHandlerChain
    要求:第一. 持有当前对象的引用
              第二.提供当前对象的获取
              第三.共同的业务处理方法
              第四.下一个对象传递
           
    2.两个业务处理对象 继承 AbstractHandlerChain
     
    项目结构 如图:
     
     
     
     
     
    设计两个业务处理对象  导购员(HandlerChainSales)   
    经  理()   都继承处理责任链。
     

     
      
    经理设计
     

     
    对象创建工厂
     




    结果:
     
     
     
    简单的结构示意图
     
     


     
    小结: 小伙伴们 今天你们学会了吗? 今天主要给大家介绍认识下我们的责任链模式,实际的运行场景非常的广泛,如 filter 拦截 ,servlet,Servlet Engine启动,tomcat服务器,  springmvc spring 等 框架中都有应用。(上海尚学堂java培训:原创,请多关注,陆续有java开发技术相关文章发布
    同学的想要灵活的运用,需要在项目实战的中去历练。后续将为大家介绍这种在设计在 项目中实战演练,利于注解配和责任链 搭建的安全校验和变种的责任链模式的运用。
     
    小伙伴,动手试试吧!

  • 相关阅读:
    矩阵的应用
    PyTorch工具
    python不同开根号速度对比
    GloVe损失函数的理解
    课程回顾-Convolutional Neural Networks
    课程回顾-Structuring Machine Learning Projects
    课程回顾-Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization
    课程回顾-Neural Network & Deep Learning
    使用GOOGLE COLAB训练深度学习模型
    如何使用Keras的Model visualization功能
  • 原文地址:https://www.cnblogs.com/shsxt/p/7681810.html
Copyright © 2020-2023  润新知