Request for comments: Bug 6306820
Alan Bateman
Alan.Bateman at Sun.COM
Mon May 21 02:05:45 PDT 2007
Richard Kennard wrote:
> Alan,
>
> Thanks for your prompt reply! I appreciate you keeping this moving.
>
> 1. I would like to postpone the issues of method chaining and URI/URL
> creation to another discussion, if that's okay.
> 2. So what we are debating between here is...
>
> public UrlQueryString {
> private UrlQueryString();
> public static UrlQueryString create();
> public static UrlQueryString parse(CharSequence query);
> ...
> }
>
> ...versus...
>
> public UrlQueryString {
> public UrlQueryString()
> public UrlQueryString(CharSequence query)
> ...
> }
>
> While both are roughly equivalent, I guess the latter seems more
> 'normal' to me, and more in keeping with the rest of the JDK?
>
> Just so you know where I'm coming from - I am no longer thinking this
> class should be any kind of builder or factory, rather I think it
> should simply model a 'www-form-urlencoded' query string.
Josh Bloch's Effective Java provides many good reasons to prefer static
factory methods over public constructors. In this context the ability to
name the creation methods and the possibility of returning a subtype are
probably the important ones. As this class evolves then it is possible
there will be new ways to create these objects (the ability the specify
the encoding, separator, etc. come to mind). Many of these creation
methods will specify the configuration as Strings so allowing the
creation names be distinguished even though they have the same
signatures will be useful. In the case of subtypes, it may be that you
want to have other types of query string in the future (as web standard
tend to evolve).
-Alan.
More information about the net-dev
mailing list