目标:更容易方便构建一个复杂的对象
要解决的问题
- 对象的字段非常多,构造函数参数过多,调用容易出错, 使用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);
本文探讨了在面对复杂对象构建时所遇到的问题,并提出了通过Builder模式等技术手段来简化对象创建过程的方法。通过示例展示了如何利用这些技术提高代码的可读性和维护性。
6871

被折叠的 条评论
为什么被折叠?



