On Thu, 5 Dec 2002, Erik Hatcher wrote:

>
> *everything should be an interface* :))
>

Unless you want to add public methods in some future version -- that
breaks all existing implementations of the interface :-)).

> ARG... I'm having some frustrations with the built-in Struts Actions
> (yeah, I know, I'm the author of one of them, LookupDispatchAction, so
> I'm guilty!)
>
> I make it a standard practice to subclass Action to form a BaseAction
> (using the template pattern, making execute final and calling a new
> executeAction method).  I then template this further with a
> BaseAdminAction which all administrative actions subclass from.  This
> works all fine and dandy when all I want to do is plain actions.
>
> But what about when I want to use DispatchAction or
> LookupDispatchAction?  I cannot easily do this.  In my last project I
> resorted to just cutting and pasting the LookupDispatchAction code into
> a new BaseLookupDispatchAction (which subclassed from my BaseAction),
> and went around the very thing I created.
>
> Do others have thoughts on this?  Suggestions on how I can handle this
> such that I actually can use the real LookupDispatchAction within a
> custom BaseAdminAction subclassed action?
>
> I hope that Struts2 is more interface-centric such that I don't have to
> resort to messing with my inheritance hierarchy to play nicely with
> Struts.  How that plays out with form beans and the rationale for them
> being an actual class is still unclear to me, but in that case I'm ok
> with creating my own BaseForm that extends from ValidatorForm (making
> validate final so no developers can mess it up!) - so I haven't run into
> any form bean inheritance issues, only actions.
>

I'm sure that the "interfaces versus convenience base classes" versus
"define APIs as abstract classes" in Struts2 will be a very lively
discussion!  There doesn't appear (to me) to be a perfect solution --
we'll need to pick the one(s) that best balance what we decide our goals
are.

> Thanks,
>       Erik
>

Craig



--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to