spring中用到的设计模式及应用场景
1.工厂模式:在Beanfactory和applicationContext创建中都用到了
2.单例模式:Bean默认就是单例模式,单例模式只允许创建一个对象,获取两个bean对象会发现他们的内存地址是一样的
<bean id="emp" class="entity.employee" scope="singleton">
</bean>
3.多例模式:把scope="singleton"改成scope=“prototype”, 每次获取这个bean都会创建一个新的bean对象,内存地址都不一样。
<bean id="emp" class="entity.employee" scope="prototype">
</bean>
1,2,3属于创建型模式
4.代理模式:Spring AOP 底层就是用了动态代理
5.适配器模式:就比如springmvc执行原理有一步就用到了, DispatcherServlet通过HandlerAdapter处理器适配器调用具体的处理器也就是Controller。
6.装饰器模式: 就是动态的给一个对象添加一些额外的职责。
4,5,6属于结构型模式
7.模板模式:spring提供的数据库访问的模板类JdbcTemplate、消息处理的模板类JMSTemplate、HTTP通信的模板类RestTemplate都用到了模板设计模式
8.策略模式: 策略模式需要定义一个策略接口,不同的策略都去实现策略接口,在需要调用过程中通过持有该策略接口,然后根据不同的场景去使用不同的实现类 。
9.委派模式: 它的基本作用就是负责任务的调用和分配任务, 应用场景:委派对象本身不知道如何处理一个任务或请求,而交给其他对象来处理;
经典案例:老板想要做一个XX项目,安排给项目经理,项目经理事先是了解整个项目组的每个人的职责的,于是项目经理拿到项目之后,分模块分配给项目组的成员。
10.观察者模式:用于spring监听事件