Richard Kennard wrote:
:

So, can we agree a regular class is better than a utility class?
That seems reasonable to me. I just suggested thinking about a utility class given that this is mostly about manipulating a map of parameters. Some aspects of the builder pattern are probably useful here but if I were creating it then I would keep it very simple and probably suggest something like this:

public class UrlQueryString {
   private UrlQueryString() { }
public static UrlQueryString create() public static UrlQueryString parse(CharSequence query) public String get(String name) public List<String> getAll(String name) public UrlQueryString set(String name, String... value) public UrlQueryString set(String name, List<String> values) public UrlQueryString add(String name, String... value) public UrlQueryString add(String name, List<String> values) public UrlQueryString add(UrlQueryString other)

   public UrlQueryString add(CharSequence other)
public UrlQueryString remove(String name) public String toString() public Map<String,List<String>> toMap() }

This isn't too different from what you have except that the object is created with static factory methods rather than public constructors, it allows for method chaining, and it doesn't do the URL/URI creation. For the latter I would suggest looking into adding static methods to java.net.URI to allow URIs be created from various URI and component combinations. Does that seem reasonable?

-Alan.

Reply via email to