星星博客 »  > 

构造器设计模式-封装es查询接口

1、什么是构造器设计模式

其核心思想是将一个“复杂对象的构建算法”与它的“部件及组装方式”分离(说白了就是创建一个对象)

2、到底什么时候使用呢

我随便找到了一个网页的首页,

这个网站的搜索条件是不是很复杂,所以当构建这个网站的搜索条件时候可以使用构造器设计模式

3、随便写一个入门级别的demo

import java.util.ArrayList;

public class SearchCondition {
    private String head;

    private String body;

    private ArrayList legs;

    private ArrayList hands;

    public String getHead() {
        return head;

    }

    public void setHead(String head) {
        this.head = head;

    }

    public String getBody() {
        return body;

    }

    public void setBody(String body) {
        this.body = body;

    }

    public ArrayList getLegs() {
        return legs;

    }

    public void setLegs(ArrayList legs) {
        this.legs = legs;

    }

    public ArrayList getHands() {
        return hands;

    }

    public void setHands(ArrayList hands) {
        this.hands = hands;

    }

    static class Builder {
        private SearchCondition condition;

        public Builder() {
            condition = new SearchCondition();

        }

        public Builder setHead(String head) {
            condition.setHead(head);

            return this;

        }

        public Builder setBody(String body) {
            condition.setBody(body);

            return this;

        }

        public Builder setLegs(ArrayList legs) {
            condition.setLegs(legs);

            return this;

        }

        public Builder setHands(ArrayList hands) {
            condition.setHands(hands);

            return this;

        }

        public SearchCondition build() {
            return condition;

        }

    }

    public static void main(String[] hh) {
        ArrayList hands = new ArrayList();

        hands.add("left");

        hands.add("right");

        ArrayList legs = new ArrayList();

        legs.add("left");

        legs.add("right");

        SearchCondition condition = new SearchCondition.Builder()

                .setBody("body")

                .setHands(hands)

                .setLegs(legs)

                .setHead("head")

                .build();

    }

}

4.通过构造器构建搜索服务查询接口

首先我们定义一个dubbo - rpc接口

public interface ISearchFacade {
    SearchResult<XXX> search(SearchCondition condition);
}

此时我们可以把这个查询条件设计为构造器,消费者可以通过构造器进行查询

相关文章