You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by Al Chou <ho...@yahoo.com> on 2003/06/19 21:55:33 UTC

Re: [math] design patterns

--- David Graham <dg...@hotmail.com> wrote:
> >--- David Graham <dg...@hotmail.com> wrote:
> > > > > Maybe I'm unique, but
> > > > > sometimes I find that Java (as well as other languages) gets in my 
> >way
> > > >rather
> > > > > than letting me solve the problem at hand in a natural way.
> > >
> > > You're not alone in that belief.  I've heard several people comment 
> >about
> > > how easy it is to code Smalltalk when exploring new solutions.
> > >
> > > > >For example, one
> > > > > thing I would have liked to see is the ability to invoke methods by 
> >the
> > > >same
> > > > > name either via static class methods or via instance methods of 
> >objects
> > > > > (where
> > > > > appropriate and useful, of course).  I don't have enough experience 
> >with
> > > >Java
> > > > > to know if that's possible, though I suspect it would be difficult 
> >at
> > > >least.
> > >
> > > Static methods are a necessary evil in OO languages and should be 
> >avoided
> > > when possible.  The entire Java Math class is a perfect example of poor
> > > design because it's just a bunch of static methods.
> > > It would have been
> > > *much* simpler to make numbers objects and allow -1.abs() type 
> >semantics.
> > > Anyways, my main point is that statics exist in Java to make certain 
> >things
> > > easier, not to allow the type of thing you describe.
> >
> >I disagree.  IMHO, in good OO design there is a place for utility classes 
> >that
> >encapsulate operations on objects, apart from the objects themselves.
> >Call me a brute, but Math.max(x,y) is more natural syntax to me than 
> >x.max(y).

I agree that max(x,y) is more natural than x.max(y), but there are cases where
the latter style of syntax might seem right.  An example (perhaps not the best)
that Java provides is the instance method Double.isInfinite().


> >The reason to avoid static methods in Java, IMHO, is that they cannot be
> >overriden, not that using utility classes in general is "bad design".
> 
> Exactly.  Any time you need a utility class with static members you can 
> replace it with a Singleton object with non-static methods.

A singleton doesn't provide non-overridability of the methods, does it?  I
guess if they're final methods, then it does.



Al

=====
Albert Davidson Chou

    Get answers to Mac questions at http://www.Mac-Mgrs.org/ .

__________________________________
Do you Yahoo!?
SBC Yahoo! DSL - Now only $29.95 per month!
http://sbc.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org