Re: one desing question, Revisited
Friday, January 31, 2003 5:31 PM , Cory Newey <[EMAIL PROTECTED]> a écrit : > I don't understand your response. The code I propose below does in > fact use delegation to factorize the functions. I'm ok with that. > 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. I was just pointing out is that probably no client code will use the CommonFunction interface of MyAction and the MyDispatchAction but themselve so it's maybe not usefull to implement it. And even if a client need CommonFunction why should they use a MyAction or MyDispatchAction instance rather than a CommonFunctionImpl instance ? If there is a need for a contract here, it's also a contract for a behavior not just for an interface. When you multi-inherite you take the interface and the behavior of each parent classes. It's not garanteed here for the clients of CommonFunction interface that they will have the behavior of CommonFounctionImpl. If you implement a function of CommonFonction another way than delgating to CommonFunctionImpl nothing will warn you about. So it is not quite like if you extends Action and CommonFunctionImpl. Java does not support multiple inhereteance and so there is *no way* to replace it exactly. This said, and Ashish warned, your code is very clean, I have nothing about that. > 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 PRO
Re: one desing question, Revisited
The interface provides both flexability in the delegation(aka different versions of the common funtions can exist), and it enforces an API. Interfaces don't need to be logically functional objects. When was the last time you cast an object to Serializable and manipulated it? Matt, On Fri, 31 Jan 2003 17:23:29 +0100 "Malik Recoing" <[EMAIL PROTECTED]> wrote: I Ask : "What the real apport of implementing CommonFunctionInterface in each classes rather than just using common.aFunction() where you need it ?" (but maintaining more code). Malik. Friday, January 31, 2003 5:17 PM , Ashish Kulkarni <[EMAIL PROTECTED]> a écrit : Hi Thanx for the all the mails, this is what i plan to do public interface CommonFunctionInterface{ // all my common methods; public Connection getConnection(); } public class CommonFunction implements CommonFunctionInterface{ public Connection getConnection(){ // provide the implementation here } } public class MyAction extends Action implements CommonFunctionInterface{ private final CommonFunction common; public MyAction(){ common = new CommonFunction(); } public Connection getConnnection(){ return common.getConnection(); } } public MyClass extends MyAction{ // now you should inherit getConnection() without problem } Ashish --- John Espey <[EMAIL PROTECTED]> wrote: > sorry, the action wouldn't pass itself, it would > pass its class. > > -Original Message- > From: John Espey [mailto:[EMAIL PROTECTED]] > Sent: Friday, January 31, 2003 10:10 AM > To: Struts Users Mailing List > Subject: RE: one desing question, Revisited > > > You could create a CommonFunctionsFactory, with a > method: > > CommonFunctions getCommonFunctionsByClass(Class) > > Your action could pass itself to this call to > retrieve a CommonFunctions > implementation, determined by the Factory, which > could look up in a > properties file which implementation to create for > the specified class. You > wouldn't really need to have your action implement > CommonFunctions. If you > needed to modify the behavior of your > CommonFunctionsImpl for a given action > class, you could extend CommonFunctionsImpl, and > then map the action class > to that new subclass. > > -Original Message----- > From: Matthew Meyer [mailto:[EMAIL PROTECTED]] > Sent: Friday, January 31, 2003 10:00 AM > To: Struts Users Mailing List > Subject: Re: one desing question, Revisited > > > What you will want to is make your commonFunctions > an > interface. Next write a class to implement all of > your > common functions. Then Write your action extending > Action > and implementing your commonFunctions interface. > Make your > common funtions an instance variable of your action > and > then simply delegate all the commonFunction messages > your > action recieves to your commonFunction instance > variable > like so: > public method(..., ) { > return commonFuntionInstance.method(, > ); > } > Hope this helps you out... > > Matt, > > > On Fri, 31 Jan 2003 07:45:22 -0800 (PST) > Ashish Kulkarni <[EMAIL PROTECTED]> > wrote: > > Hi, > > I know java does not allow multiple inheritance, > but I > > gave that example so i can make it clear what i > want > > to do, > > So i want to find out a work around to achieve what > i > > have explanned in the example > > Ashish > > --- Jacob Hookom <[EMAIL PROTECTED]> wrote: > > > 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 > > > > &g
Re: one desing question, Revisited
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]
Re: one desing question, Revisited
I Ask : "What the real apport of implementing CommonFunctionInterface in each classes rather than just using common.aFunction() where you need it ?" (but maintaining more code). Malik. Friday, January 31, 2003 5:17 PM , Ashish Kulkarni <[EMAIL PROTECTED]> a écrit : > Hi > Thanx for the all the mails, this is what i plan to do > public interface CommonFunctionInterface{ > // all my common methods; >public Connection getConnection(); > > } > > public class CommonFunction implements > CommonFunctionInterface{ > > public Connection getConnection(){ > // provide the implementation here > > } > } > > public class MyAction extends Action implements > CommonFunctionInterface{ > private final CommonFunction common; > > public MyAction(){ > common = new CommonFunction(); > } > > public Connection getConnnection(){ > return common.getConnection(); > } > > } > > public MyClass extends MyAction{ > // now you should inherit getConnection() > without problem } > > > Ashish > > > --- John Espey <[EMAIL PROTECTED]> wrote: > > sorry, the action wouldn't pass itself, it would > > pass its class. > > > > -----Original Message- > > From: John Espey [mailto:[EMAIL PROTECTED]] > > Sent: Friday, January 31, 2003 10:10 AM > > To: Struts Users Mailing List > > Subject: RE: one desing question, Revisited > > > > > > You could create a CommonFunctionsFactory, with a > > method: > > > > CommonFunctions getCommonFunctionsByClass(Class) > > > > Your action could pass itself to this call to > > retrieve a CommonFunctions > > implementation, determined by the Factory, which > > could look up in a > > properties file which implementation to create for > > the specified class. You > > wouldn't really need to have your action implement > > CommonFunctions. If you > > needed to modify the behavior of your > > CommonFunctionsImpl for a given action > > class, you could extend CommonFunctionsImpl, and > > then map the action class > > to that new subclass. > > > > -Original Message- > > From: Matthew Meyer [mailto:[EMAIL PROTECTED]] > > Sent: Friday, January 31, 2003 10:00 AM > > To: Struts Users Mailing List > > Subject: Re: one desing question, Revisited > > > > > > What you will want to is make your commonFunctions > > an > > interface. Next write a class to implement all of > > your > > common functions. Then Write your action extending > > Action > > and implementing your commonFunctions interface. > > Make your > > common funtions an instance variable of your action > > and > > then simply delegate all the commonFunction messages > > your > > action recieves to your commonFunction instance > > variable > > like so: > > public method(..., ) { > > return commonFuntionInstance.method(, > > ); > > } > > Hope this helps you out... > > > > Matt, > > > > > > On Fri, 31 Jan 2003 07:45:22 -0800 (PST) > > Ashish Kulkarni <[EMAIL PROTECTED]> > > wrote: > > > Hi, > > > I know java does not allow multiple inheritance, > > but I > > > gave that example so i can make it clear what i > > want > > > to do, > > > So i want to find out a work around to achieve what > > i > > > have explanned in the example > > > Ashish > > > --- Jacob Hookom <[EMAIL PROTECTED]> wrote: > > > > 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 whi
Re: one desing question, Revisited
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]
RE: one desing question, Revisited
Hi Thanx for the all the mails, this is what i plan to do public interface CommonFunctionInterface{ // all my common methods; public Connection getConnection(); } public class CommonFunction implements CommonFunctionInterface{ public Connection getConnection(){ // provide the implementation here } } public class MyAction extends Action implements CommonFunctionInterface{ private final CommonFunction common; public MyAction(){ common = new CommonFunction(); } public Connection getConnnection(){ return common.getConnection(); } } public MyClass extends MyAction{ // now you should inherit getConnection() without problem } Ashish --- John Espey <[EMAIL PROTECTED]> wrote: > sorry, the action wouldn't pass itself, it would > pass its class. > > -Original Message- > From: John Espey [mailto:[EMAIL PROTECTED]] > Sent: Friday, January 31, 2003 10:10 AM > To: Struts Users Mailing List > Subject: RE: one desing question, Revisited > > > You could create a CommonFunctionsFactory, with a > method: > > CommonFunctions getCommonFunctionsByClass(Class) > > Your action could pass itself to this call to > retrieve a CommonFunctions > implementation, determined by the Factory, which > could look up in a > properties file which implementation to create for > the specified class. You > wouldn't really need to have your action implement > CommonFunctions. If you > needed to modify the behavior of your > CommonFunctionsImpl for a given action > class, you could extend CommonFunctionsImpl, and > then map the action class > to that new subclass. > > -Original Message- > From: Matthew Meyer [mailto:[EMAIL PROTECTED]] > Sent: Friday, January 31, 2003 10:00 AM > To: Struts Users Mailing List > Subject: Re: one desing question, Revisited > > > What you will want to is make your commonFunctions > an > interface. Next write a class to implement all of > your > common functions. Then Write your action extending > Action > and implementing your commonFunctions interface. > Make your > common funtions an instance variable of your action > and > then simply delegate all the commonFunction messages > your > action recieves to your commonFunction instance > variable > like so: > public method(..., ) { > return commonFuntionInstance.method(, > ); > } > Hope this helps you out... > > Matt, > > > On Fri, 31 Jan 2003 07:45:22 -0800 (PST) > Ashish Kulkarni <[EMAIL PROTECTED]> > wrote: > >Hi, > >I know java does not allow multiple inheritance, > but I > >gave that example so i can make it clear what i > want > >to do, > >So i want to find out a work around to achieve what > i > >have explanned in the example > >Ashish > >--- Jacob Hookom <[EMAIL PROTECTED]> wrote: > >> 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 > >> | > >> | &g
RE: one desing question, Revisited
sorry, the action wouldn't pass itself, it would pass its class. -Original Message- From: John Espey [mailto:[EMAIL PROTECTED]] Sent: Friday, January 31, 2003 10:10 AM To: Struts Users Mailing List Subject: RE: one desing question, Revisited You could create a CommonFunctionsFactory, with a method: CommonFunctions getCommonFunctionsByClass(Class) Your action could pass itself to this call to retrieve a CommonFunctions implementation, determined by the Factory, which could look up in a properties file which implementation to create for the specified class. You wouldn't really need to have your action implement CommonFunctions. If you needed to modify the behavior of your CommonFunctionsImpl for a given action class, you could extend CommonFunctionsImpl, and then map the action class to that new subclass. -Original Message- From: Matthew Meyer [mailto:[EMAIL PROTECTED]] Sent: Friday, January 31, 2003 10:00 AM To: Struts Users Mailing List Subject: Re: one desing question, Revisited What you will want to is make your commonFunctions an interface. Next write a class to implement all of your common functions. Then Write your action extending Action and implementing your commonFunctions interface. Make your common funtions an instance variable of your action and then simply delegate all the commonFunction messages your action recieves to your commonFunction instance variable like so: public method(..., ) { return commonFuntionInstance.method(, ); } Hope this helps you out... Matt, On Fri, 31 Jan 2003 07:45:22 -0800 (PST) Ashish Kulkarni <[EMAIL PROTECTED]> wrote: >Hi, >I know java does not allow multiple inheritance, but I >gave that example so i can make it clear what i want >to do, >So i want to find out a work around to achieve what i >have explanned in the example >Ashish >--- Jacob Hookom <[EMAIL PROTECTED]> wrote: >> 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] >> > > >= >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]
RE: one desing question, Revisited
You could create a CommonFunctionsFactory, with a method: CommonFunctions getCommonFunctionsByClass(Class) Your action could pass itself to this call to retrieve a CommonFunctions implementation, determined by the Factory, which could look up in a properties file which implementation to create for the specified class. You wouldn't really need to have your action implement CommonFunctions. If you needed to modify the behavior of your CommonFunctionsImpl for a given action class, you could extend CommonFunctionsImpl, and then map the action class to that new subclass. -Original Message- From: Matthew Meyer [mailto:[EMAIL PROTECTED]] Sent: Friday, January 31, 2003 10:00 AM To: Struts Users Mailing List Subject: Re: one desing question, Revisited What you will want to is make your commonFunctions an interface. Next write a class to implement all of your common functions. Then Write your action extending Action and implementing your commonFunctions interface. Make your common funtions an instance variable of your action and then simply delegate all the commonFunction messages your action recieves to your commonFunction instance variable like so: public method(..., ) { return commonFuntionInstance.method(, ); } Hope this helps you out... Matt, On Fri, 31 Jan 2003 07:45:22 -0800 (PST) Ashish Kulkarni <[EMAIL PROTECTED]> wrote: >Hi, >I know java does not allow multiple inheritance, but I >gave that example so i can make it clear what i want >to do, >So i want to find out a work around to achieve what i >have explanned in the example >Ashish >--- Jacob Hookom <[EMAIL PROTECTED]> wrote: >> 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] >> > > >= >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]
Re: one desing question, Revisited
Friday, January 31, 2003 4:34 PM , Ashish Kulkarni <[EMAIL PROTECTED]> a écrit : > 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 > As mutiple inheritance is not possible, the only alternative is to delegate. You can do it by using a CommonFunction attribute in an MyAbstractAction classe. All the concrete sub-classes of it can then use this attribute as an access to the common functions. This is only interesting if you CommonFunction instances can be differents (differently configured) for each MyAction. An other common way to use utility Classes via delegation is by using it as a Singleton (look for Sigleton desing pattern) or by making all methods (functions) static if posssible. Malik - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: one desing question, Revisited
What you will want to is make your commonFunctions an interface. Next write a class to implement all of your common functions. Then Write your action extending Action and implementing your commonFunctions interface. Make your common funtions an instance variable of your action and then simply delegate all the commonFunction messages your action recieves to your commonFunction instance variable like so: public method(..., ) { return commonFuntionInstance.method(, ); } Hope this helps you out... Matt, On Fri, 31 Jan 2003 07:45:22 -0800 (PST) Ashish Kulkarni <[EMAIL PROTECTED]> wrote: Hi, I know java does not allow multiple inheritance, but I gave that example so i can make it clear what i want to do, So i want to find out a work around to achieve what i have explanned in the example Ashish --- Jacob Hookom <[EMAIL PROTECTED]> wrote: 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] = 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]
RE: one desing question, Revisited
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]
RE: one desing question, Revisited
Hi, I know java does not allow multiple inheritance, but I gave that example so i can make it clear what i want to do, So i want to find out a work around to achieve what i have explanned in the example Ashish --- Jacob Hookom <[EMAIL PROTECTED]> wrote: > 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] > = 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]
RE: one desing question, Revisited
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]