您的位置:首页 > 产品设计 > UI/UE

Android 建造者(Builder)模式

2016-01-16 08:27 441 查看
关于 Builder 模式 详述:/article/2234639.html

先来张图



看到 Android 中 使用了 Builder 模式的地方还是非常多的。

使用时 大概例如以下:

Notification noti = new Notification.Builder(context).build();
AlertDialog dialog = new AlertDialog.Builder(context).create();

在builder()和create()之前 还能够创建多个属性。类似以下的样例

演示样例

/**
* author : stone
* email  : aa86799@163.com
* time   : 15/7/3 10 26
*/
public class TestBuilder {

private int a;
private String b;

public int getA() {
return a;
}

public String getB() {
return b;
}

protected TestBuilder(Builder builder) {
this.a = builder.ma;
this.b = builder.mb;
}

public static class Builder {
private int ma;
private String mb;

public Builder createA(int a) {
this.ma = a;
return this;
}

public Builder showB(String b) {
this.mb = b;
return this;
}

public TestBuilder build() {
return new TestBuilder(this);
}
}

public static void main(String[] args) {
TestBuilder tb = new TestBuilder.Builder()
.createA(88)
.showB("susan")
.build();

}
}


注:

1. 这里是通过静态内部类Builder来构造零件

2. 每一个零件的构建方法返回该构建者

3. 外部实际对象的构造方法的訪问符 应是 private或protected。使其仅仅能通过内部类来创建

与普通的Java-Bean的对照:

Bean中用setter 或 构造方法中一堆參数, 来给属性赋值

这里。用new Builder().a.b.c...build();

个人感觉。优点就是:

1. 有选择的构建须要的属性,不须要为了使用哪个构造方法而纠结

2. 调用时,赋值一个属性后,编译器马上提示其他可运行的构建属性的方法。书写更方便、高速
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: