Android 建造者(Builder)模式
2016-01-16 08:27
441 查看
关于 Builder 模式 详述:/article/2234639.html
先来张图
![](http://img.blog.csdn.net/20150703105437704?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamp3d21scDQ1Ng==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
看到 Android 中 使用了 Builder 模式的地方还是非常多的。
使用时 大概例如以下:
在builder()和create()之前 还能够创建多个属性。类似以下的样例
演示样例
注:
1. 这里是通过静态内部类Builder来构造零件
2. 每一个零件的构建方法返回该构建者
3. 外部实际对象的构造方法的訪问符 应是 private或protected。使其仅仅能通过内部类来创建
与普通的Java-Bean的对照:
Bean中用setter 或 构造方法中一堆參数, 来给属性赋值
这里。用new Builder().a.b.c...build();
个人感觉。优点就是:
1. 有选择的构建须要的属性,不须要为了使用哪个构造方法而纠结
2. 调用时,赋值一个属性后,编译器马上提示其他可运行的构建属性的方法。书写更方便、高速
先来张图
看到 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. 调用时,赋值一个属性后,编译器马上提示其他可运行的构建属性的方法。书写更方便、高速
相关文章推荐
- New UI-带阴影的TextView
- New UI-带边框的TextView
- New UI-Java代码动态添加控件或xml布局
- New UI-纯Java代码加载布局
- New UI-关于布局优化集锦
- New UI-<merge>标签减少视图层级,让布局更高效
- New UI-<ViewStub>标签延时加载布局
- New UI-DroidDraw工具设计Android界面
- New UI-9patch工具制作局部缩放的图片素材
- New UI-布局之GridLayout(网格布局)详解
- New UI-布局之FrameLayout(帧布局)详解
- New UI-布局之TableLayout(表格布局)详解
- New UI-布局之RelativeLayout(相对布局)详解
- New UI-布局之LinearLayout(线性布局)详解
- New UI-妙用view的keepScreenOn属性保持屏幕常亮
- New UI-设置view的可用与不可用
- New UI-设置view的可见与不可见
- New UI-gravity和layout_gravity属性解析
- SetUID、SetGID中的大小写Ss和Sticky bit中的大小写Tt
- 第三天笔记,今天听的有点晕,幸好公司年会,我们放3天假,所以慢慢复习吧