【面试】设计模式
参考博文: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接口相结合。