各位工程师在代码中肯定遇到过这种创建对象的方法 new Builder.setAge(2).setName(“战三”).setSex(“男”).build;
没错这就是传说中的Builder模式。
1. Builder介绍
Builder模式是一步一步创建一个复杂对象的创建模式,它允许用户在不知道内部构造细节的情况下,可以精细的控制对象的创建流程。该模式是为了将构建复杂的对象的过程和他的部件解耦,是得构建过程和部件的表示隔离开来。
因为一个复杂的对象有很多大量的组成部分,例如人,有眼、鼻、手、脚等各种组成,如何将这些部件组成一人,这要经过复杂的孕育,为了在构建过程中对外隐藏细节,就可以使用Builder模式将这些部件和组装过程分离,使得构建过程和部件都可以对外自由扩展,两者之间的耦合度也降到最低。
2. Builder模式的定义
将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
3. Builder模式的使用场景
(1) 相同方法不同的执行顺序,产生不同的事件结果时。
(2) 多个部件或零件,都可以装配到到一个对象中,但是产生的运行结果又不同时。
(3) 产品类非常复杂,或者产品类中的调用顺序不同产生了不同的作用,这个时候使用建造这模式非常合适,
(4) 当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时。
4. Builder的简单使用
5. publicclass Person {
private Stringname;
private float height;
private int age;
private Person(Builderbuilder) {
name =builder.name;
height =builder.height;
age =builder.age;
}
public static final class Builder {
private Stringname;
private float height;
private int age;
public Builder() {
}
public Buildername(String name) {
this.name = name;
return this;
}
public Builderheight(floatheight) {
this.height = height;
return this;
}
public Builderage(int age) {
this.age = age;
return this;
}
public Personbuild() {
return new Person(this);
}
}
}
在代码中使用
new Person.Builder().age(2).build();