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框架中设计模式的应用