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接口,是具体资源访问策略的抽象,也是所有资源访问类所实现的接口

  • 相关阅读:
    django页面分类和继承
    django前端从数据库获取请求参数
    pycharm配置django工程
    django 应用各个py文件代码
    CF. 1428G2. Lucky Numbers(背包DP 二进制优化 贪心)
    HDU. 6566. The Hanged Man(树形背包DP DFS序 重链剖分)
    小米邀请赛 决赛. B. Rikka with Maximum Segment Sum(分治 决策单调性)
    区间树 学习笔记
    CF GYM. 102861M. Machine Gun(主席树)
    2016-2017 ACM-ICPC East Central North America Regional Contest (ECNA 2016) (B, D, G, H)
  • 原文地址:https://www.cnblogs.com/blackdd/p/8638509.html
Copyright © 2011-2022 走看看