包装器模式-开源代码实例
1,开源代码实例
HttpServletRequestWrapper
ServletRequestWrapper:
使用(ServletRequest)HttpServletRequest对象实现了servletrequest规范相关的方法;
HttpServletRequestWrapper:
除了继承了以上ServletRequestWrapper的servletrequest规范的相关方法外,
使用 HttpServletRequest对象实现了httpservletrequest规范中除了servlet规范之外的方法;
2,开源代码实践
2-1,需求
向项目发出某个请求,如http://localhost:8080/oldFriend?giveMeMoney=10;
希望项目获得myMoney的value时,扩大为10倍,比如此处按道理获得的value为10,但是需求完成后,获得value为10*10=100;
2-2,原逻辑
2-3,设计方案
如右图,通过filter统一处理请求参数:
2-4,实现
3,总结
包装器的其他应用案例:
如做网上的算法题时,经常是通过控制台来输入测试用例,读取用例一般使用如下字符流:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.in: 字节流
InputStreamReader: 字节流 --> 字符流
BufferedReader: 字符流 --> 缓冲型字符流
包装器模式:
按网上的说法类似俄罗斯套娃,外层套娃除了提供内层套娃的功能,
较之还会附加一些功能(可能是对内层套娃功能的改造,可能是多出一些其他功能,且很多情况下多出的功能底层也来自于内层套娃)。