个人理解
当对象的构造过程变得很复杂的时候,参数很多,通过构造函数会产生大量冗余代码,不好维护,而我们又不希望调用者通过set的方式来构造对象(封装,隐藏),因为这样很容易出问题,于是,可以把整个构造的过程封装在一个构造类里,可以通过构造类实现更加精细的构造,并且职责明确
意图
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
当构造过程必须允许被构造的对象有不同的表示时。
实现(java)
package com.zlf.pattern;
public class BuliderDemo {
private int a;
private int b;
private BuliderDemo(Builder builder){
this.a = builder.a;
this.b = builder.b;
}
public static class Builder{
private int a;
private int b;
public Builder(){
}
public Builder buildA(int a){
this.a = a;
return this;
}
public Builder buildB(int b){
this.b = b;
return this;
}
public BuliderDemo create(){
return new BuliderDemo(this);
}
}
public static void main(String[] args){
BuliderDemo test = new BuliderDemo.Builder().buildA(1).buildB(2).create();
System.err.println(test.a);
}
}