I don't understand your response.  The code I propose below does in fact use 
delegation to factorize the functions.  However, by utilizing an interface, all code 
that works with MyAction and MyDispatchAction objects now has a contract that says 
that both objects support the CommonFunction methods.  Thus that code can deal with 
both objects as CommonFunction objects if it wants to.  This is what I understood that 
Ashish wanted to do.  IOW, what's your beef?

--Cory

>>> [EMAIL PROTECTED] 01/31/03 09:17AM >>>
I don't agree with the interface solution. As the name sugest CommonFunction
seems to be only factorization of code and not a real type. MyAction and
MyDispatchAction will never be called from outside as some 'CommonFunction'.
Interfaces are meant to be externals contracts not a way to replace
inheritance.

IMHO when you want to factorize functions in sevral Classes of different
types you only need to delegate. But maybe I missunderstood what Ashish
whant.

Malik.


Friday, January 31, 2003 4:55 PM , Cory Newey <[EMAIL PROTECTED]> a
écrit :
> Yeah, if you read his entire post, he says that he knows that multiple
> inheritance isn't allowed in Java.  It looks to me like you'll have to
> make CommonFunctions an interface.  If the methods in CommonFunctions
> actually are identical for both MyAction and MyDispatchAction, you
> could avoid having duplicate code in the two classes by deligating to
> a third object that actually implements the methods.  What you would
> end up with would look something like this:
>
> MyAction extends Action implements CommonFunctions {
>    private CommonFunctionsImpl common = new CommonFunctionsImpl();
>    ... methods in CommonFunctions interface that just call the common
>         object above to the real work ...
> }
>
> MyDispatchAction extends DispatchAction implements CommonFunctions {
>    private CommonFunctionsImpl common = new CommonFunctionsImpl();
>    ... methods in CommonFunctions interface that just call the common
>         object above to the real work ...
> }
>
> CommonFunctionsImpl implements CommonFunctions {
>    ... methods that do the real work ...
> }
>
> --Cory
>
> Cory R. Newey
> [EMAIL PROTECTED] 
> Senior Software Engineer
> Novell, the leading provider of Net services software
>
>
> > > > [EMAIL PROTECTED] 01/31/03 08:41AM >>>
> I'm going to save you from getting flamed.... java does not allow
> multiple
> inheritance.  You can only extend from a single Object.
>
> -Jacob
>
> > -----Original Message-----
> > From: Ashish Kulkarni [mailto:[EMAIL PROTECTED]] 
> > Sent: Friday, January 31, 2003 9:34 AM
> > To: [EMAIL PROTECTED] 
> > Subject: one desing question, Revisited
> >
> > Hi,
> >
> > When i was thinking about my problem, I think what i
> > want to do in multiple inhereteance
> > I want to define a class called CommonFunctions , this
> > call will have methods which are common, (As name
> > suggest)
> > now i have to do some thing like
> > public class MyAction extends Action, CommonFuntions
> >
> > and public class MyDisptachAction extends
> > DispatchAction, CommonFuntions
> >
> > By doing this i will be able to access all the methods
> > in the class which sybclasses MyAction or
> > MyDispatchAction
> > I know the code above is not possible to do, but i
> > want to do some thing like that..
> > So what are the ways of achieving it
> >
> > =====
> > A$HI$H
> >
> > __________________________________________________
> > Do you Yahoo!?
> > Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
> > http://mailplus.yahoo.com 
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED] 
> > For additional commands, e-mail: [EMAIL PROTECTED] 
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED] 
> For additional commands, e-mail: [EMAIL PROTECTED] 
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED] 
> For additional commands, e-mail: [EMAIL PROTECTED] 


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


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

Reply via email to