HttpServlet
- абстрактный класс со всеми реализованными методами. Почему он абстрактный?
Самый общий ответ, который я получил, - это ограничение экземпляра HttpServlet
. Но есть и другие способы сделать это, так как частный конструктор будет ограничивать создание экземпляра.
Я могу понять, что они следуют шаблону проектирования шаблонов. Если некоторые методы являются абстрактными, пользователь будет реализовывать их все, даже если он не нуждается в них для своей бизнес-логики.
Но если HttpServlet
не был абстрактным, пользователь все равно может расширять его и переопределять требуемые методы.
По крайней мере, по смыслу словаря слова abstract, его не имеет для меня никакого смысла иметь абстрактный класс со всем реализованным методом.
Да, сочетание абстрактных и конкретных методов в порядке.
Но если вы делаете абстракцию классов, почему бы не сделать те методы абстрактными, которые подкласс должен переопределить? или может вообще не объявлять его абстрактным?
В этом случае doGet()
или doPost()
.