When I want to apply the DRY principle, i.e. to unify the code of multiple Struts action for different use-cases (for example the administrator role and the operator role ), one option would be to use an abstract base class "BaseAction" for the action and then use "AdminAction extends BaseAction" and "OperatorAction extends BaseAction". I would apply inheritance for an abstract NewBaseAction, UpdateBaseAction, DeleteBaseAction, ListBaseAction.
But there is a principle that says "favor composition over inheritance" (http://www.artima.com/lejava/articles/designprinciples4.html). Is there a way to implement this in a clean way by using interfaces?