目标:更容易方便构建一个复杂的对象
要解决的问题
- 对象的字段非常多,构造函数参数过多,调用容易出错, 使用get set导致不流畅。无法多字段组合验证;
- 构建具有层次/树形结构的组合对象;
- 为了提供流畅的API ;
例子
例子1
String urlHttp = "http://baidu.com" + "&query=" + extract + "&track=" + track;
1.url参数中 ? 或者&的拼接容易出错;
2.url本身的编码可能异常;
String trackUrl = MyUrlBuilder.builder()
.aUrl("http://baidu.com?")
.bb("bbbb")
.cc("cccc")
.build();
例子2
Es的query查询, 条件组合
QueryBuilder qb = QueryBuilders.boolQuery()
.must(QueryBuilders.termQuery("aaa", "aValue"))
.mustNot(QueryBuilders.termQuery("bbb", "bValue"))
.build();
例子3
XContentBuilder builder = XContentFactory.jsonBuilder()
.startObject()
.field("user", "kimchy")
.field("postDate", new Date())
.field("message", "trying out Elasticsearch")
.endObject();
String str = builder.string();
System.out.print(str);