当前位置: 首页 > 科技观察

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

时间:2023-03-12 03:44:24 科技观察

一个应届毕业生被问到这样一个面试问题,Spring用了哪些设计模式?其实只要用得够熟练Spring,回答这个问题还是很容易的。因为Spring的命名非常规范,基本上从类名就可以看出使用了哪些设计模式。今天,我就把我的理解分享给大家。下面我总结一下Spring中8种设计模式的应用:1.工厂模式。Spring的BeanFactory类使用简单工厂模式。它主要提供getBean()方法来创建一个对象的实例;我们更多看到的ApplicationContext也是继承自BeanFactory。2.单例模式。Spring中的Bean默认是singleton单例。我们可以通过配置Bean的scope参数来修改。SpringBean内置了五个作用域,分别是singleton、prototype、request、session和globalSession。3.装饰者模式。在Spring中,只要看到以Wrapper命名的类,基本都是使用装饰器模式。例如,BeanWrapper用于访问Bean的属性和方法。4.策略模式。Spring中bean的实例化使用策略模式。因为Bean的实例化包括原生对象的实例化和代理对象的实例化,不同对象的实例化逻辑不同,所以实例化策略也不同。例如,SimpleInstantiationStrategy是Spring中默认的实例化策略。5.适配器模式。在Spring中,只要是以Adapter命名的类,基本上都是适配器模式的应用。比如MVC模块中的HandlerAdapter。6.代理模式。比如AOP模块中的AopProxy,使用了JDK的动态代理和CGLIB字节码生成技术;7、模板法模式。主要用来解决代码重复的问题。Spring提供了很多模板类来减少重复代码,基本都是以Template结尾,比如RestTemplate、JmsTemplate、JdbcTemplate。8.观察者模式。主要用于当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知。在Spring中一般以Listener结尾,比如ApplicationListener等。当然,Spring是一个非常经典的框架,它使用了很多设计模式。而且很多设计模式往往是混合使用的,你中有我,我中有你。因此,我们在阅读代码的时候,不能简单的断定某个类一定只使用了某个设计模式。以上就是我对Spring中主要设计模式的分享。