首页 > java中,对于包装设计模式有个疑问,为什么不能直接继承?

java中,对于包装设计模式有个疑问,为什么不能直接继承?

看书时,遇到这样一段话——“HttpServletResponseWrapper类本身并没有修改或扩充被包装的HttpServletResponse对象的功能,它的主要作用是为HttpServletResponse提供默认的实现。对于用户自定义的HttpServletResponse的包装类,只要继承HttpServletResponseWrapper类,然后覆盖它的方法,就能修改后扩充被包装的HttpServletResponse对象

针对斜体加粗的文字,使用了包装类,到最后还是要继承Wrapper类,才能起到修改或扩充的目的,那为什么一开始直接继承HttpServletResponse,使用包装类不是绕路了吗?


在stackoverflow上看到相关问题,姑且转述一下吧。
HttpServletResponse是一个接口,所以你最后继承的是一个接口而不是具体的实现类,所有的方法都要自己重写(这应该不是一般用途的目的吧)。所以就有了HttpServletResponseWrapper这个实现类,你可以继承,重写你需要加入自己逻辑的方法(装饰者模式)

【热门文章】
【热门文章】