包裝器模式-開原始碼例項
阿新 • • 發佈:2021-12-21
1,開原始碼例項
HttpServletRequestWrapper
ServletRequestWrapper:
使用(ServletRequest)HttpServletRequest物件實現了servletrequest規範相關的方法;
HttpServletRequestWrapper:
除了繼承了以上ServletRequestWrapper的servletrequest規範的相關方法外,
使用 HttpServletRequest物件實現了httpservletrequest規範中除了servlet規範之外的方法;
2,開原始碼實踐
2-1,需求
向專案發出某個請求,如
希望專案獲得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: 字元流-->緩衝型字元流
包裝器模式:
按網上的說法類似俄羅斯套娃,外層套娃除了提供內層套娃的功能,
較之還會附加一些功能(可能是對內層套娃功能的改造,可能是多出一些其他功能,且很多情況下多出的功能底層也來自於內層套娃)。