关于 Builder 模式 详述:http://blog.csdn.net/jjwwmlp456/article/details/39890699


先来张图

看到 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. 调用时,赋值一个属性后,编译器立即提示其它可执行的构建属性的方法,书写更方便、快速






更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android(安卓)selector下的属性值
  5. android:clipChildren属性的分析——是否剪裁子View
  6. Android(安卓)布局之GridLayout
  7. Android(安卓)GPS架构分析(二)
  8. Android在子线程中更新UI的方法汇总(共七种)
  9. Android应用程序获取ROOT权限的方法 (基础篇)

随机推荐

  1. android的编码习惯
  2. 在android中开发快速地搜索手机文件引擎
  3. Android(安卓)手把手进阶自定义View(十二)-
  4. Android(安卓)Handler Message总结
  5. android Q 深色主题
  6. Android智能手机中各种音频场景下的audio
  7. Android(安卓)4.0 允许用户禁用 Google
  8. 最全面的Android(安卓)Intent机制讲解
  9. Service与Activity通信
  10. layout layout_alignLeft跟layout_toLeft