定义
将一个复杂对象的构建和表示分离,使得同样的构建过程可以构建不同的对象。
经典例子
创建对象传递参数的时候往往通过构造函数来传,,随着构造函数的增加,代码会很难编写。
例:生产组装一辆、台电脑
public class computer{
private final String display;
private final String keyBoard;
private final String mouse;
public static class Builder{
//必选字段
private final String display;
private final String keyBoard;
//可选字段
private final String mouse;
public Builder(String display, String keyBoard){
this.display = display;
this.keyBoard = keyBoard;
}
public Builder mouse(String mouse){
this.mouse = mouse;
return this;
}
public Computer build(){
return new Computer(this);
}
}
private Computer (Builder builder){
display = builder.display;
keyBoard = builder.keyBoard;
mouse = builder.mouse;
}
}
测试代码
Computer computer = new Computer.Builder("三星","华为")
.mouse("苹果")
.build();
Android 采用Builder模式的AlertDialog
AlertDialog.Builder dialog = new AlertDialog.Nuilder(this);
dialog.setTitle("关于我们")
.setMessage("大家好!")
.creat()
.show();
优缺点
链式调用抑郁阅读和编写,出错难以debug