Android设计模式——Builder(建造者)模式

1.建造者模式是一步一步创建一个复杂对象的创建模式。该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件表示隔离开。

2.Bulider模式的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象。

3.Builder的使用场景:

   <1>相同的方法,不同的执行顺序,产生不同的事件结果。

   <2>多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时。

 <3> 产品类非常复杂,或产品类中的调用顺序不同产生了不同的作用。

   <4>初始化一个对象特别复杂,如参数很多,且很多参数具有默认值时。

4.Builder模式的代码示例:

/**
 * Builder 建造者模式
 */
public class Person {
    private String name;
    private String sex;
    private int age;

    /**
     * 构造方法,传入builder对象
     * @param builder 对象
     */
    public Person(Builder builder) {
        this.name = builder.name;
        this.sex = builder.sex;
        this.age = builder.age;
    }

    /**
     *
     * get  set 方法
     */
    public String getName() {
        return name;
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public void setAge(int age) {
        this.age = age;
    }


    /**
     *
     * 静态内部类 Builder类  包含所有Person属性。
     */
    public static class Builder{
        private String name;
        private String sex;
        private int age;

        public Builder name(String name){
            this.name=name;
            return this;
        }
        public Builder sex(String sex){
            this.sex=sex;
            return this;
        }
        public Builder age(int age){
            this.age=age;
            return this;
        }

        public Person builder(){
            return new Person(this);

        }
    }

}

通过Builder,可以创建不同参数的Person对象

        Person.Builder builder=new Person.Builder();
        Person person0=builder.name("张三").builder();
        Person person1=builder.name("张三").sex("男").builder();
        Person person2=builder.name("张三").sex("男").age(20).builder();

 5.在Android中我们常见的Builder模式是Alertdialog。Alertdialog的源码如下:

待续…………

今天多一点积累,明天少一分烦恼
原文地址:https://www.cnblogs.com/galibujianbusana/p/6412565.html