HttpServlet是具有所有已实现方法的抽象类。为什么是抽象的?
HttpServlet
我得到的最常见答案是,限制的实例化HttpServlet。但是还有其他方法可以执行此操作,例如私有构造函数将限制实例化。
我了解他们遵循模板方法设计模式。如果某些方法是抽象的,那么即使他的业务逻辑不需要它们,用户也将最终实现所有这些方法。
但是,如果HttpServlet不是抽象的,用户仍然可以扩展它并覆盖require方法。
至少从“抽象”一词的字典含义来看,使用所有已实现方法的抽象类对我来说没有任何意义。
是的,可以同时使用抽象方法和具体方法。
但是,如果要对类进行抽象处理,为什么不对子类必须覆盖的那些方法进行抽象处理呢?还是根本不将其声明为抽象?
喜欢doGet()还是doPost()这种情况。
doGet()
doPost()
为了具有任何有用的行为,预计您将必须重写这些方法。HttpServlet本身没有有用的功能。
将其构造函数设为私有将限制创建子类的能力。
HttpServlet的设计可能并不理想- 在许多页面(尤其是表单)上,GET和POST逻辑应至少部分沿着一条通用路径进行。然而HttpServlet的的设计理念是报价doGet(),doPost()等实现接听根据HTTP版本“不支持”的错误。如果您需要返回这样的答案,这些存根对于继承很有用。
总而言之, API /接口 是完整的-但 功能 绝对不是。因此,它被声明为 abstract 。