URIBuilder简介
URIBuilder主要用于构造URI,URI即"通一资源标志符(Uniform Resource Identifier, URI)",表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行定位的。URL是URI的一个子集,它是Uniform Resource Locator的缩写,译为"统一资源定位符"。
URIBuilder构造函数
URIBuilder()
URIBuilder(final String string) 内部会创建URI对象
URIBuilder(final URI uri)
备注:非空的两个构造实际内部都调用了digestURI(uri) 将URI对象解析并赋值给类的属性
URIBuilder正是采用了至少有7个参数,如果要满足各种需求的组合,恐怕总共要提供n种构造函数,显然不现实。然而,URIBuilder既可以造出一个不可变的URI,又可以兼顾N种参数。URIBuilder可以这样用:
//http://www.httpclient.cn/search/?s=httpclient
URI uri = new URIBuilder()
.setScheme("http")
.setHost("www.httpclient.cn")
.setPath("/search")
.setParameter("s", "httpclient")
.build();
建造者模式。
等号右边实际上是一行,先创建一个URIBuilder对象实例,调用实例的setScheme方法,此方法顺便返回URIBuilder对象实例,刚刚返回的这个实例调用setHost方法,...,最后一个返回的URIBuilder对象实例调用build方法,返回URI对象。它是如何实现的呢?
原来的URI类的set方法的基础上,添加一个返回值,返回URIBuilder自己就够了:
class URIBuilder{
public URIBuilder setScheme(String scheme){
...
return this;
}
public URIBuilder setHost(String host){
...
return this;
}
public URIBuilder setPath(String path){
...
return this;
}
//built 方法,把参数拼接,然后返回一个URI类
public URI built(){
...
return uri;
}
}
由于URIBuilder每次都返回它自己,所以可以连续的执行set方法,最后通过built方法返回URI类。