源码解析 使用tomcat作为web容器时,用到的外观模式

源码解析

使用tomcat作为web容器时,接收浏览器发送过来的请求,

tomcat会将请求信息封装成ServletRequest对象

如下图①处对象。

但是大家想想ServletRequest是一个接口,它还有一个子接口HttpServletRequest

而我们知道该request对象肯定是一个HttpServletRequest对象的子实现类对象,

到底是哪个类的对象呢?

可以通过输出request对象,我们就会发现是一个名为RequestFacade的类的对象。

RequestFacade类就使用了外观模式。先看结构图:

为什么在此处使用外观模式呢?

定义 RequestFacade 类,分别实现 ServletRequest ,同时定义私有成员变量 Request ,并且方法的实现调用 Request 的实现。

然后,将 RequestFacade上转为 ServletRequest 传给 servlet 的 service 方法,这样即使在 servlet 中被下转为 RequestFacade ,也不能访问私有成员变量对象中的方法。

既用了 Request ,又能防止其中方法被不合理的访问。

猜你喜欢

转载自blog.csdn.net/qq_39368007/article/details/114012147
今日推荐