zoukankan      html  css  js  c++  java
  • SpringMVC中的适配器模式应用

    转(http://blog.sina.com.cn/s/blog_e660c25b01030kbj.html

    springmvc的基本流程在之前的文章里都大致分析完了,接下来总结下springmvc中运用了哪些设计模式。

     
    一、设计模式
    什么是设计模式,通俗来讲,就是是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
    它是软件设计、系统设计中的一种解决方案。
    有点类似围棋中的起手定式。围棋中一般开局中边角的下法都是固定的,对手下出一步棋,接下来本方的落子实际上已经固定了,只有这样下,才能获取到最大的利益。
    设计模式也是这样,对于软件开发中遇到的问题,采用某一种设计模式,成为了被多数人验证的必选解决方案。
     
    二、设计模式的原则
    1.单一职责原则
    一个类只完成单一的功能,粒度越小越好
    2.开闭原则
    对扩展开放,对修改关闭。
    一个类开发完成后,应当可以通过扩展的方式实现新的功能,而不是通过修改原有类来达到目的。
    3.里氏替换原则
    所有引用父类的地方都可以透明的使用其子类
    4.依赖倒置原则
    抽象不应该依赖于细节,细节应该依赖于抽象。
    应该针对接口或抽象类编程,而不是针对具体的实现编程
    5.接口隔离原则
    接口的划分应该更细致,使用多个功能单一的接口,而不是将所有的功能放到一个接口中实现,客户端不应该去依赖它所不需要的接口方法。
    6.迪米特法则
    一个类应尽可能少的与其他类进行交互。降低耦合。
     
    三、适配器模式
    1.springmvc中对handler的处理使用了适配器模式。
    springmvc通过HandlerMapping获取到可以处理的handler,这些handler的类型各不相同,对请求的预处理,参数获取都不相同,最简单的做法是根据不同的handler类型,做一个分支处理,不同的handler编写不同的代码。
    这样的问题是很明显的,分支判断复杂,代码庞大,不符合单一职责原则。如果要增加一种handler类型,需要修改代码增加分支处理,违反了开闭原则。DispatcherServelt与多个handler发生了交互,违反迪米特法则。
     
    而使用适配器模式,就可以很好的解决这个问题:
    不直接对handler进行处理,而是将handler交给适配器HandlerAdapter去处理,这样DispatcherServlet交互的类就只剩下一个接口,HandlerAdapter,符合迪米特法则,尽可能少的与其他类发生交互;
    将handler交给HandlerAdapter处理后,不同类型的handler被对应类型的HandlerAdapter处理,每个HandlerAdapter都只完成单一的handler处理,符合单一职责原则;
    如果需要新增一个类型的handler,只需要新增对应类型的HandlerAdapter就可以处理,无需修改原有代码,符合开闭原则。
    这样,不同的handler的不同处理方式,就在HandlerAdapter中得到了适配,对于DispatcherServlet来将,只需要统一的调用HandlerAdapter的handle()方法就可以了,无需关注不同handler的处理细节。
     
    2.适配器模式的基本实现:
    springmvc中的设计模式---适配器模式
    springmvc中的设计模式---适配器模式

    springmvc中的设计模式---适配器模式

    springmvc中的设计模式---适配器模式
    springmvc中的设计模式---适配器模式
    对于springmvc来说,这里的ball就是一个个处理具体请求的handler,有些handler只需要简单的转发请求,有些handler则需要通过;
  • 相关阅读:
    python 发送中文名邮件乱码问题
    python---django
    python中获取文件目录的方法
    python 读取文件的常用方法
    python读取文件的常用方法
    python数据库调用
    mysql数据库主从同步状态正常,无异常报错,数据不能同步
    Python小脚本
    语句和语法
    CIDR详解和ip最长地址前缀匹配
  • 原文地址:https://www.cnblogs.com/wllhq/p/13554099.html
Copyright © 2011-2022 走看看