定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

该模式适合于:

  1. 针对于构造复杂,或者构造函数参数很多的对象。
  2. 通过复用相同的构造代码,生成不同的产品。

代码实现:

//产品
public class Person{  
    private String name;  
    private Integer age;  
  
    public Person(String name, Integer age) {  
        this.name = name;  
        this.age = age;  
    }  
	//具体构建器
    public static class Builder{  
        private String name="";  
        private Integer age=0;  
  
        public Builder setName(String name) {  
            this.name = name;  
            return this;        
        }  
  
        public Builder setAge(Integer age) {  
            this.age = age;  
            return this;       
        }  
  
        public Person builder(){  
            return new Person(name,age);  
        }  
    }  
}
Person.Builder builder = new Person.Builder();  
Person person = builder.setName("John")  
        .setAge(23).builder();

优点:

  1. 可以分步创建对象
  2. 将对象复杂的构造代码与业务逻辑分离

缺点:增加类的复杂度