编写BaseServlet,重写service方法时发现:
protected void service(HttpServletRequest req, HttpServletResponse resp)
req.getClass():class org.apache.catalina.connector.RequestFacade
HttpServletRequest.class:interface javax.servlet.http.HttpServletRequest
结论
两者获得的Class对象不是一样的。HttpServletRequest是一个接口,你通过getClass方法获取的,是这个对象的实现类,RequestFacade是实现HttpServletRequest的,因此它本身就是HttpServletRequest。
门面设计模式有很多的应用场景(以后用Facade代替,显得洋气一些:-D),如Tomcat中就有很多的门面设计模式的体现。而为什么需要使用门面设计模式呢?在我看来,就好比一个两个国家要进行交流,没有必要与这两个国家的所有人进行交流,只需要通过外交部与相应的人员进行交流就好。
对于这个解释就是门面设计模式的一个需求——希望封装或隐藏原系统。
Facade特征
更多详细demo解释查看原文地址:https://blog.csdn.net/Anger_Coder/article/details/12277001