您的位置:首页 > 产品设计 > UI/UE

JAVA设计模式------建造者模式(Builder模式)

2017-06-13 00:00 344 查看
摘要: 建造者模式/Builder模式-----解决构建复杂对象多步初始化和赋值的复杂程度;

如果一个类的属性有很多,那么为了满足不同的需要,我们需要写很多的构造函数,或者是对最复杂的构造函数赋初始化的值;例如:有一个类MulpitleParamClass(多参数的类)

public class MulpitleParamClass {
/*参数*/
private int id;
private String name;
private int age;
//......参数省略不写......
/*构造函数*/
public MulpitleParamClass(int id) {
this.id = id;
}
//......构造函数省略不写......
public MulpitleParamClass(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
}

1:如果我们要构造一个这样的类需要写许多的构造函数,这个工作可以借助编辑器完成;但是如果参数太多,如果超过100个就不太好办了.......构造函数会有2∧参数个数的构造函数

2:在很多的情况下,我们不太好选择使用哪个构造函数去构造这个类,最起码是比较麻烦的;

所以在类属性比较多的情况下,使用类的构造器构造就会失去灵活性;在类的属性比较多的情况下,可以使用构造器模式来进行构造类对象;如下:

public class UseBuilderForMupitleParamClass {
/*参数*/
private int id;
private String name;
private int age;
//......参数省略不写......

public int getId() {
return id;
}

public String getName() {
return name;
}

public int getAge() {
return age;
}

public UseBuilderForMupitleParamClass(Builder bulider) {
id = bulider.id;
name = bulider.name;
age = bulider.age;
}

public static final class Builder {
private int id;
private String name;
private int age;

public Builder setId(int id) {
this.id = id;
return this;
}

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

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

public UseBuilderForMupitleParamClass build() {
return new UseBuilderForMupitleParamClass(this);
}
}
}

在参数较多的情况下,使用Builder模式可以这样操作,这种情况下我们保证了构造复杂属性的类的灵活性

public static void main(String[] args) {
UseBuilderForMupitleParamClass.Builder builder = new UseBuilderForMupitleParamClass.Builder();
builder.setAge(1);
builder.setId(1);
builder.setName("周星星");
UseBuilderForMupitleParamClass build = builder.build();
System.out.println(build.toString());
}

打印:
UseBuilderForMupitleParamClass{id=1, name='周星星', age=1}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Builder设计模式