/**
* 使用场景之一:当初始化一个对象特别复杂,参数较多,但很多参数都有默认值时。
*/
/**
* @Author : haojiangt
* @Description :builder模式
**/
public class BuilderTest {
@Test
public void test1(){
StringBuilder sb = new StringBuilder();
sb.append("a").append("b").append("c");
System.out.println(sb);
}
}
public class TsetBean {
private String name;
private Integer age;
private String addr;
private String phone;
private String desc;
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public String getAddr() {
return addr;
}
public String getPhone() {
return phone;
}
public String getDesc() {
return desc;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setAddr(String addr) {
this.addr = addr;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setDesc(String desc) {
this.desc = desc;
}
/**
* 第一种方式:构造方法(重叠构造方法)
*/
public TsetBean(String name, Integer age) {
this(name, age, null, null, null);
}
public TsetBean(String name, Integer age, String addr) {
this(name, age, addr, null, null);
}
public TsetBean(String name, Integer age, String addr, String phone) {
this(name, age, addr, phone, null);
}
public TsetBean(String name, Integer age, String addr, String phone, String desc) {
this.name = name;
this.age = age;
this.addr = addr;
this.phone = phone;
this.desc = desc;
}
//第二种builder模式
public TsetBean(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.phone = builder.phone;
this.addr = builder.addr;
this.desc = builder.phone;
}
public static class Builder{
//必要参数
private String name;
private Integer age;
//可选参数
private String addr;
private String phone;
private String desc;
public Builder(String name, Integer age) {
this.name = name;
this.age = age;
}
public Builder addr(String addr) {
this.addr = addr;
return this;
}
public Builder phone(String phone) {
this.phone = phone;
return this;
}
public Builder desc(String desc) {
this.desc = desc;
return this;
}
public TsetBean build(){
return new TsetBean(this);
}
}
//
@Override
public String toString() {
return "TsetBean{" +
"name='" + name + '\'' +
", age=" + age +
", addr='" + addr + '\'' +
", phone='" + phone + '\'' +
", desc='" + desc + '\'' +
'}';
}
public static void main(String[] args){
TsetBean zhang = new TsetBean.Builder("zhang", 15)
.addr("莲花街")
.desc("阳光开朗")
.phone("12452718").build();
System.out.println(zhang.toString());
//out: TsetBean{name='zhang', age=15, addr='莲花街', phone='12452718', desc='12452718'}
}
}
本文介绍了一种在Java中实现Builder模式的方法,通过实例演示了如何使用该模式简化对象的创建过程,尤其是在面对拥有多个可选参数的对象时。
2502

被折叠的 条评论
为什么被折叠?



