Интерфейсы дают разработчикам Java больше гибкости, чем конкретные классы. Я новичок в среде Struts, и меня смущает решение разработчиков Struts сделать ActionSupport
классом. На мой взгляд, это должен быть интерфейс. Почему они это сделали?
Почему ActionSupport в Struts — это класс, а не интерфейс?
Ответы:
Вы должны прочитать документацию здесь
Предоставляет реализацию по умолчанию для наиболее распространенных действий. См. документацию для всех интерфейсов, реализуемых этим классом, для получения более подробной информации.
На самом деле это реализация по умолчанию для интерфейса Action
. И поскольку это реализация, она не может быть интерфейсом, потому что интерфейсы на 100% абстрактны.
Из документации по стойкам:
Класс ActionSupport Предоставляет реализацию по умолчанию для наиболее распространенных действий. См. документацию для всех интерфейсов, реализуемых этим классом, для получения более подробной информации.
http://struts.apache.org/2.1.2/struts2-core/apidocs/com/opensymphony/xwork2/ActionSupport.html
Это полностью архитектурное решение. ActionSupport
предоставляет пользователю очень полезные ресурсы внутри их собственных действий, поэтому нет необходимости раскрывать их где-либо еще внутри API. Пользователь намеревался расширить ActionSupport
для своих собственных действий по использованию его ресурсов. Интерфейс Action
подчиняется пользователю для реализации метода execute
, как мы знаем, в этом нет необходимости.
Действия — это простые POJO, им не нужно что-то расширять или реализовывать.