• Spring系列文章:Spring中的设计模式


    一、简单⼯⼚模式

    BeanFactory的getBean()⽅法,通过唯⼀标识来获取Bean对象。是典型的简单⼯⼚模式(静态⼯⼚模 式);

    二、⼯⼚⽅法模式

    FactoryBean是典型的⼯⼚⽅法模式。在配置⽂件中通过factory-method属性来指定⼯⼚⽅法,该⽅法 是⼀个实例⽅法。

    三、单例模式

    Spring⽤的是双重判断加锁的单例模式。请看下⾯代码,我们之前讲解Bean的循环依赖的时候⻅过:

    四、 代理模式

    Spring的AOP就是使⽤了动态代理实现的。

    五、装饰器模式

    JavaSE中的IO流是⾮常典型的装饰器模式。

    Spring 中配置 DataSource 的时候,这些dataSource可能是各种不同类型的,⽐如不同的数据库: Oracle、SQL Server、MySQL等,也可能是不同的数据源:⽐如apache 提供的 org.apache.commons.dbcp.BasicDataSource、spring提供的 org.springframework.jndi.JndiObjectFactoryBean等。

    这时,能否在尽可能少修改原有类代码下的情况下,做到动态切换不同的数据源?此时就可以⽤到装饰 者模式。

    Spring根据每次请求的不同,将dataSource属性设置成不同的数据源,以到达切换数据源的⽬的。 Spring中类名中带有:Decorator和Wrapper单词的类,都是装饰器模式。

    六、观察者模式

    定义对象间的⼀对多的关系,当⼀个对象的状态发⽣改变时,所有依赖于它的对象都得到通知并⾃动更 新。Spring中观察者模式⼀般⽤在listener的实现。

    Spring中的事件编程模型就是观察者模式的实现。在Spring中定义了⼀个ApplicationListener接⼝,⽤ 来监听Application的事件,Application其实就是ApplicationContext,ApplicationContext内置了⼏个 事件,其中⽐较容易理解的是:ContextRefreshedEvent、ContextStartedEvent、 ContextStoppedEvent、ContextClosedEvent

    七、策略模式

    策略模式是⾏为性模式,调⽤不同的⽅法,适应⾏为的变化 ,强调⽗类的调⽤⼦类的特性 。 getHandler是HandlerMapping接⼝中的唯⼀⽅法,⽤于根据请求找到匹配的处理器。

    ⽐如我们⾃⼰写了AccountDao接⼝,然后这个接⼝下有不同的实现类:AccountDaoForMySQL, AccountDaoForOracle。对于service来说不需要关⼼底层具体的实现,只需要⾯向AccountDao接⼝调 ⽤,底层可以灵活切换实现,这就是策略模式。

    八、模板方法模式

    Spring中的JdbcTemplate类就是⼀个模板类。它就是⼀个模板⽅法设计模式的体现。在模板类的模板⽅ 法execute中编写核⼼算法,具体的实现步骤在⼦类中完成

  • 相关阅读:
    Android Studio Emulator一直卡在Google Logo出不来
    一篇文章带你学会Hadoop-3.3.4集群部署
    JVM-4
    SpringBoot集成Microsoft office 365账号方案(InsCode AI 创作助手)
    B - Extended Traffic(边权带负,spfa并且判断负环)
    Springboot礼品商城系统设计与实现q92av计算机毕业设计-课程设计-期末作业-毕设程序代做
    深入剖析Buddy 内存管理机制(上)
    VS2017 IDE 编译时的 X86、x64位 是干什么的
    【数据结构】线性表
    Mac 错误zsh: command not found: brew解决方法
  • 原文地址:https://blog.csdn.net/qq_34491508/article/details/132780247