Builder模式
有些对象创建起来很复杂, 这个时候我们就可以采用Builder模式, 可以使创建者在不需要了解具体创建细节的情况下也可以精细控制对象的构造
开始撸代码
我们来模仿一个组装电脑的过程, 简化为组建主机, 设置操作系统, 设置显示器三个部分
1. 先来写一个计算机抽象类
public abstract class Computer {
protected String mBoard;
protected String mDisplay;
protected String mOs;
public String getBoard() {
return mBoard;
}
public void setBoard(String board) {
mBoard = board;
}
public String getDisplay() {
return mDisplay;
}
public void setDisplay(String display) {
mDisplay = display;
}
public String getOs() {
return mOs;
}
public void setOs(String os) {
mOs = os;
}
}
再来写一个Computer实现类
public class Macbook extends Computer {
protected Macbook() {
}
}
再来写一个抽象Builder类
public abstract class Builder {
public abstract void buildBoard(String board);
public abstract void buildDisplay(String display);
public abstract void buildOs();
public abstract Computer create();
}
再来写一个Builder实现类
public class MacbookBuilder extends Builder {
private Computer mComputer = new Macbook();
@Override
public MacbookBuilder buildBoard(String board) {
mComputer.setBoard(board);
return this;
}
@Override
public MacbookBuilder buildDisplay(String display) {
mComputer.setDisplay(display);
return this;
}
@Override
public MacbookBuilder buildOs() {
mComputer.setOs("ios");
return this;
}
@Override
public Computer create() {
return mComputer;
}
}
好了 接下来就可以使用了
Builder builder = new MacbookBuilder();
builder.buildBoard("主板");
builder.buildDisplay("显示器");
builder.buildOs();
builder.create();
或者链式调用
Computer computer = new MacbookBuilder()
.buildBoard("主板")
.buildDisplay("显示器")
.buildOs()
.create();
安卓系统中Builder模式随处可见, 我们经常使用的AlertDialg就是通过AlertDialog.Builder这个内部类来构建, 还有OKhttp等