-建造者:不同的对象,动态设置不同的属性
通过返回设置后的当前对象。如JDK里面的StringBuilder 抽象一个方法append(...)
面向对象的举例:装修房子厨房,你需要的一些属性(对象)热水器 、燃气灶、灯、水槽等等。
这些属性创建时都预留了位置,你需要上面就可以放进去啥,然后每个东西的颜色什么的都可以自由选择。
最后不同的人装修出来不同的厨房。
public static void main(String[] args) {
House house1 = new House.HouseBuilder()
.withColor(Color.BLACK)
.withGas(new Gas())
.withLight(new Light())
.build();
System.out.println(house1);
House house2 = new House.HouseBuilder()
.withColor(Color.WHITE)
.withLight(new Light())
.build();
System.out.println(house2);
}
英雄必须有用武之地:
重点就是 return this;
public URL addParameter(String key, String value) {
if (key == null || key.length() == 0
|| value == null || value.length() == 0) {
return this;
}
// if value doesn't change, return immediately
if (value.equals(getParameters().get(key))) { // value != null
return this;
}
Map<String, String> map = new HashMap<String, String>(getParameters());
map.put(key, value);
return new URL(protocol, username, password, host, port, path, map);
}