zoukankan      html  css  js  c++  java
  • Android 建造者(Builder)模式

    关于 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. 调用时,赋值一个属性后,编译器马上提示其他可运行的构建属性的方法。书写更方便、高速



       




  • 相关阅读:
    关于Visual Studio.NET 2008开发一册通C# 3.0从基础到项目实战的读后感
    书.NET 3.5与VB 2008高级编程(第3版)的评论
    Java 基础语法
    idea 无法创建子目录
    壁纸
    【博客园】美化
    Java变量和常量
    本人负责任的告诉你,从博客看不出什么东东来。
    DataFormating的用法总结
    javascript弹出div(一)
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5134906.html
Copyright © 2011-2022 走看看