设计模式之建造者模式

前言

建造者模式(Builder Pattern),是一个构造复杂对象的设计模式,将复杂对象的创建过程分步完成,使得构建复杂对象变得不是那么复杂;JDK中的StringBuilder和StringBuffer就是建造者模式的应用,前面分步append(“xxx”),在最后一步toString()得到一个完整的,预期的String对象。

示例代码

/**构建完整合法的url构建器 */
public class UrlBuilder {
private String url = null;
private UrlBuilder(String url) {
if(url == null || url.length == 0){
throw new IllegalArgumentException("url is null.");
}
this.url = url;
}

public sttaic UrlBuilder newBuilder(String url) {
return new UrlBuilder(url);
}

public UrlBuilder append(String paramKey, Object paramValue) {
if(paramKey == null || paramValue == null){
return this;
}
final String appendValue = paramKey + "=" + paramValue.toString();
if(url.endsWith("/")){
url = url.substring(0, url.lastIndexOf("/"))
}
if(url.indexOf("?") > -1){
if(url =.endsWith("?") || url.endsWith("&")){
url = url + appendValue;
} else {
url = url + "&" + appendValue;
}
} else {
url = url + "?" + appendValue;
}
}

public String build() {
return this.url;
}
}

# client 测试:
public class Client {
public static void main(String[] args) {
String url = UrlBuilder.newBuilder("http://www.pandan.xyz/").append("key", "value").build();
System.out.println(url); // http://www.pandan.xyz?key=value
}
}

总结

再介绍一篇建造者模式的使用案例,强化模式的使用场景,具体请参考之前的一篇代码博文《apache工具类之HashCodeBuilder》。