zoukankan      html  css  js  c++  java
  • spring框架中用到了哪些设计模式

    1、代理模式:在AOP和remoting中被用的比较多

    2、单例模式:在spring配置文件中定义的bean默认为单例模式

    3、模板方法模式:解决代码重复问题

    父类定义骨架(共同方法的实现,调用哪些方法及顺序),某些特定方法由子类实现(父类是空方法,子类继承后再重写)

    4、前端控制器模式:spring提供了DispatcherServlet来对请求进行分发

    5、依赖注入模式:贯穿于BeanFactory和ApplicationContext接口的核心理念

    6、工厂模式:

    (1)简单工厂:

    实现方式:BeanFactory根据传入一个唯一的标识来获得bean对象,由工厂类根据传入的参数动态决定应该创建哪一个产品类

    实现原理:

    bean容器的启动阶段:读取bean的xml配置文件,将bean元素分别转换成一个BeanDefinition对象。然后通过BeanDefinitionRegistry将这些bean注册到beanFactory中。

    容器中bean的实例化阶段:主要通过反射或者CGLIB对bean进行实例化

    (2)工厂方法:

    实现方式:FactoryBean接口

    实现原理:实现了FactoryBean接口的bean是一类叫做factory的bean,特点是spring会在使用getBean()调用获得该bean时,自动调用该bean的getObject()方法。返回的是这个bean.getObject()方法的返回值。

    典型例子:spring与mybatis的结合:

    <bean  id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" ><bean>

    //最终返回的是SqlSessionFactoryBean.getObject()的返回值

    7、适配器模式

    实现方式:springmvc中的适配器HandlerAdapter

    实现过程:dispatcherServlet根据HandlerMapping返回的handler,向HandlerAdapter发起请求,处理handler。HandlerAdapter根据规则找到对应的Handler并让其执行,执行完毕后Handler会向HandlerAdapter返回一个ModelAndView,最后由HandlerAdapter向dispatcherServlet返回一个ModelAndView

    8、装饰器模式:

    实现方式:类名中包含Wrapper,或者是Decorator,就是装饰器模式

    实质:动态地给一个对象添加一些额外的职责,比生成子类更灵活

    9、观察者模式

    实现方式:spring的事件驱动模型使用的是观察者模式,常用的地方就是listener的实现

    具体实现:事件机制的实现包括事件源、事件、事件监听器:

    ApplicationEvent抽象类【事件】

    ApplicationListener接口【事件监听器】

    ApplicationContext接口【事件源】

    10、策略模式

    实现方式:spring框架的资源访问Resource接口,是具体资源访问策略的抽象,也是所有资源访问类所实现的接口

  • 相关阅读:
    Behavior Targeting 技术研究
    LINQ的Distinct总结
    当为业务逻辑层(BLL,Service)提供基类之后,程序变得了更加面向对象了
    MVC中,查询以异步呈现,分页不用异步的解决方案
    基础才是重中之重——面向抽象编程(抽象类的多态性)
    基础才是重中之重——派生类集合与基类集合可以相互转换吗?
    让你的 Nginx 的 RTMP 直播具有统计某频道在线观看用户数量的功能
    转发一个最新HEVCH.265码流分析软件
    PHP性能优化大全(整理)
    “灭”了国外的mini sql !
  • 原文地址:https://www.cnblogs.com/blackdd/p/8638509.html
Copyright © 2011-2022 走看看