mardi 1 décembre 2015

Factory pattern create pre-built builders

I have a SearchRequest object that can be created using a SearchRequestBuilder. Some of our predefined SearchRequestBuilder can be quite complex. I have seen factory patterns used to create different types of the same parent object, but I was wondering if this is proper design to have something like this:

public class SearchRequestBuilderFactory {

    public enum Type {
        SEARCH, MATCH
    }

    public SearchRequestBuilder createBuilder(Type type) {
        switch (type) {
        case SEARCH:
            return createSearchBuilder();
            break;
        case MATCHING:
            return createMatchBuilder();
            break;
        }
    }

    private SearchRequestBuilder createSearchBuilder() {
        SearchRequestBuilder srb = new SearchRequestBuilder();
        srb.addField("*");
        srb.addFilter("searchFilter");
        return srb;
    }

    private SearchRequestBuilder createMatchBuilder() {
        SearchRequestBuilder srb = new SearchRequestBuilder();
        srb.addFilter("matchFilter");
        srb.addThreshold(0.5);
        return srb;
    }
}

Aucun commentaire:

Enregistrer un commentaire