Spring中的设计模式

(1)考察目标

主要考察对设计模式的认识,以及spring中设计模式的应用

(2)题目分析

1工厂模式

这个很明显,在各种BeanFactory以及ApplicationContext创建中都用到了。

2模板模式

这个也很明显,在各种BeanFactory以及ApplicationContext实现中也都用到了。

3代理模式

在Aop实现中用到了JDK的动态代理。

4单例模式

这个比如在创建bean的时候。

5策略模式

在spring中,我们可以使用JdbcTemplate实现对数据库的CRUD操作,而在查询时我们可能会用到RowMapper接口以及spring提供的一个BeanPropertyRowMapper的实现类。RowMapper接口就是规范,而我们根据实际业务需求编写的每个实现类,都是一个达成目标的策略。

6观察者模式

spring在java EE应用中创建的WebApplicationContext时,是通过一个ContextLoaderListener监听器实现的。监听器就是观察者模式的具体体现。

7适配器模式

在spring-framework中提供了spring mvc的开发包。我们在用spring mvc中,它实现控制器方式有很多种。例如我们常用的使用@Controller注解,还有实现Controller接口或者实现HttpRequestHandler接口等等。而在DispatcherServlet中如何处理这三种不同的控制器呢,它用到了适配器,用于对不同的实现方式适配。

(3)应用场景

在我们的项目中需要解决全站中文乱码问题。我们的服务器采用的是Tomcat7.x,此时的Tomcat还没有解决get请求的乱码问题。

此时我们需要自己写一个过滤器,在过滤器的doFilter方法中调用request.setCharacterEncoding()方法设置字符集。但是此设置只对post方式请求有效,get请求无效。

于是,我们就可以采用装饰者模式(包装模式),对HttpServletRequest对象进行包装,重写里面的方法,实现get方式请求中文乱码的解决。

当然,我们也可以使用代理模式,同样对获取请求参数的方法增强,从而解决乱码问题。

(4)总结

本题主要考察的是:

1)常用的设计模式以及对它的理解

2)spring框架中设计模式的应用

点击此处
隐藏目录