Решение "композиция в пользу наследования" может быть либо:
- переместить общий код в отдельный, не
Action
класс, используемый всеми Action
, о которых идет речь, или
- переместите другой код в отдельный, не
Action
класс и получите один Action
, который может использовать любое из этих поведений.
Прошло несколько лет с тех пор, как я сделал Struts, но я думаю, что для (2) вам понадобится небольшая хитрость в struts-config.xml
, настроив несколько <action>
одного и того же класса Action
с разными параметрами и Action
может загружать или выбирать другую реализацию поведения в зависимости от параметров. Кажется, это немного не Strutsy, так как он берет некоторую логику управления, которая обычно находится прямо в struts-config.xml
, и скрывает ее в коде.
Но в зависимости от вашей культуры развития это может считаться хорошей вещью.
Вероятность применения композиционного подхода, вероятно, зависит от того, каким кодом вы хотите поделиться, и имеет ли смысл пытаться изолировать этот код от шаблонной структуры Struts.
Последнее приложение Struts, в котором я работал, мы использовали наследование. Возможно, это было правильно, возможно, мы просто не знали ничего лучше.