1. 程式人生 > 其它 >包裝器模式-開原始碼例項

包裝器模式-開原始碼例項

1,開原始碼例項

HttpServletRequestWrapper

ServletRequestWrapper:

  使用(ServletRequestHttpServletRequest物件實現了servletrequest規範相關的方法;

HttpServletRequestWrapper:

  除了繼承了以上ServletRequestWrapperservletrequest規範的相關方法外,

  使用 HttpServletRequest物件實現了httpservletrequest規範中除了servlet規範之外的方法;

2,開原始碼實踐

2-1,需求

向專案發出某個請求,如

http://localhost:8080/oldFriend?giveMeMoney=10

希望專案獲得myMoneyvalue時,擴大為10倍,比如此處按道理獲得的value10,但是需求完成後,獲得value10*10=100

2-2,原邏輯

2-3,設計方案

如右圖,通過filter統一處理請求引數:

2-4,實現

3,總結

包裝器的其他應用案例:

如做網上的演算法題時,經常是通過控制檯來輸入測試用例,讀取用例一般使用如下字元流:

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

System.in      位元組流

InputStreamReader位元組流-->字元流

BufferedReader   字元流-->緩衝型字元流

包裝器模式:

  按網上的說法類似俄羅斯套娃,外層套娃除了提供內層套娃的功能,

較之還會附加一些功能(可能是對內層套娃功能的改造,可能是多出一些其他功能,且很多情況下多出的功能底層也來自於內層套娃)。