【面试】设计模式

参考博文:https://blog.csdn.net/aa1215018028/article/details/81703900

Spring中使用了哪些设计模式?

工厂模式:

Spring使用工厂模式可以通过BeanFactory或ApplicationContext 来创建对象。

  • BeanFactory:延迟注入,占用内存较少,程序启动速度更快;
  • ApplicationContext:容器启动的时候,不管你用不用到,一次性创建所有的bean。BeanFactory仅提供了最基本的依赖注入支持,ApplicationContext扩展了BeanFactory,一般我们使用ApplicationContext更多。

ApplicationContext实现的三个类:

  • ClassPathXmlApplication:把上下文文件当成类路径资源;
  • FileSystemXmlApplication:把文件系统中的XML文件载入上下文定义信息。
  • XmlWebApplicationContext:把web系统中的XML文件载入上下文信息。

单例模式:

在我们的系统中,有些对象我们只需要一个,比如线程池、缓存、注册表、日志对象、充当打印机、显卡等设备驱动程序的对象等。

Spring依赖注入Bean实例默认是单例的。

适配器模式:

SpringMVC中的适配器HandlerAdatper。

HandlerAdatper会根据Handler规则执行不同的Handler。

装饰器模式:

Spring中用到的装饰器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。

装饰器模式的实质就是给一个对象添加一些额外的职责。

代理模式:

Spring中AOP就是代理模式的实现。

观察者模式:

Spring的事件驱动模型使用的是观察者模式,最常用的就是listener的实现。

策略模式:

Spring框架的资源访问Resource接口。该接口提供了更强的资源访问能力,Spring框架本身使用了大量Resource接口来访问底层资源。

模板方法模式:

父类定义了骨架(调用哪些方法及顺序),某些特定方法由子类实现。

JDBC的抽象和对Hibernate的集成,都采用了一种理念或者处理方式,那就是模板方法模式与相应的Callback接口相结合。

原文地址:https://www.cnblogs.com/Rain1203/p/11341090.html