建造者无非就是剥离参数与实现,以前我把参数和实现写在了一起,比如
public void setTitle(String titleName) {
tvTitle.setText(titleName);
}
其实这是错的,正确写法
private String titleName;
public void setTitle(String titleName) {
this.titleName = titleName;
}
然后在build里进行参数的应用。
可以从Android的AlertDialog学习一二
new AlertDialog.Builder()
.setTitle("Title")
.build()
.show();
所以建造者不能仅仅是一个类,这样只是形式上采用了建造者,最应该的是分成两个类。
然后在Builder的基础上增加父接口,并加上注释
public class BuilderImpl {
private String titleName;
public void setTitle(String titleName) {
this.titleName = titleName;
}
public void build() {
...
}
}
public interface Builder {
/**
* 设置标题
**/
void setTitle(String titleName);
/**
* 构建
**/
void build();
}
这样使用者会很爽,这样的代码才是好代码。所以建造者一定要标准地写,不能像我之前一样想当然,不然使用者会不舒服。
后来书里又提到了一些WMS,也算比较有趣,ViewRootImpl是WMS(native)与Framework(java)之间的桥梁,借助WMS的native实现来进行真正的绘制。