为什么HttpServlet类被声明为抽象?

sat*_*esh 12 java servlets

为什么HttpServlet类被声明为抽象,即使该类中没有抽象方法?

Bal*_*usC 20

这是因为它遵循模板方法设计模式.这些doXxx()方法具有返回HTTP 405 Method Not Implemented错误的所有默认行为.如果这些方法都是抽象的,那么即使您的业务需求根本不需要,您也会被迫全部覆盖它们.它只会导致样板代码和未指定/不直观的行为.


San*_*rma 8

它被声明为一个类而不是一个接口来实现设置servlet所需的大多数可用/可重复的代码.它被声明为abstract因为实例化一个"裸骨"servlet是没有意义的,它只关注设置并且不包含任何自定义/用户定义的逻辑.