https://www.jianshu.com/p/0ea8c2fe8e10
这个模式其实是
Adapter
模式和Decorator
模式的统称。
1. 范例
Servlet规范中的javax.servlet.http.HttpServletRequestWrapper
就是这种模式的经典例子。
HttpServletRequestWrapper
继承自ServletRequestWrapper
, 同时实现了HttpServletRequest
。- 而
ServletRequestWrapper
则是实现了ServletRequest
接口。 - 注意
HttpServletRequestWrapper
和ServletRequestWrapper
都不是abstract, 所以是可以直接拿来用的。 不过我们一般是继承自它,然后覆写我们所关注的方法。
2. 分析
-
因为这些wrapper可以互相嵌套, 最终造就一个千层饼样式的对象。每一层都是
ServletRequest
类型, 但每层只处理特