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的源码如下:
待续…………