Builder模式是一步一步创建一个复杂对象的创建型模式,他允许用户在不知道内部构造细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。

##使用场景

例如,在创建一个对象时,如果该对象的构造方法需要多个参数,而多个参数势必会增加开发者调用该构造方法时的难度,一两个参数还好,如果说参数有5个,甚至是更多的时候,开发者在调用方法的时候就需要一个个的比对参数的作用,而如果中途构造方法的参数改变了,就需要改动很多个地方,也就是增加了维护及拓展的难度。

而使用Builder模式,可以直接通过setMethodName()来设置参数,而如果setMethodName()返回的是Builder本身,还可以实现链式创建。这让代码变得更为的清晰,同时也容易维护及拓展。

1
2
3
4
5
6
7
8
9
10
11
public Builder setName(String name) {
this.name = name;
return builder;
}

public Builder setAge(String name) {
this.name = name;
return builder;
}

new TestBuilder().setName("haha").setAge(20);

上面介绍的这个使用场景是Builder模式使用在创建对象时,在Android中,AlertDialog.Builder就采用了这种方式,具体的各位可以查看一下相关的源码。
除了这个使用场景之外,Builder模式也可以用于正常的开发中,不仅仅是构造方法,但是由于它们的思路是一样的,这里就不再赘述,毕竟思想最重要 : )

##额外的

Builder模式可以将一个对象的创建分为必要参数和可选参数,这样也增加了一个组件或者是一个函数的用途。在Builder的构造方法中填入必要的参数,而可选的参数就可以使用setMethodName()这种方法来动态的添加,这在Android中相当重要,可以多使用使用