简介
建造者模式(Builder Pattern)指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式.即创建型模式
意图
拆分构建过程
优缺点
- 优点
- 封装性好,构建和表示分离。
- 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。
2.缺点
- 产品的组成部分必须相同,这限制了其使用范围。
- 如果产品的内部变化复杂,如果产品内部发生变化,则建造者也要同步修改,后期维护成本较大。
建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。
模式的结构与实现
建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成
案例
public class TestPerson {
private String mPersonName;
private int mPersonAge;
private int mSex;
private String mCardNumber;
public TestPerson TestPerson(){
return new TestPerson(new TestPerson.Builder());
}
public TestPerson(TestPerson.Builder builder){
this.mCardNumber = builder.mCardNumber;
this.mSex = builder.mSex;
this.mPersonAge = builder.mPersonAge;
this.mPersonName = builder.mPersonName;
}
public static final class Builder {
private String mPersonName;
private int mPersonAge;
private int mSex;
private String mCardNumber;
public Builder(){}
public TestPerson build(){
return new TestPerson(this);
}
public TestPerson.Builder addPersonName(String mPersonName) {
this.mPersonName = mPersonName;
return this;
}
public TestPerson.Builder addPersonAge(int mPersonAge) {
this.mPersonAge = mPersonAge;
return this;
}
public TestPerson.Builder addSex(int mSex) {
this.mSex = mSex;
return this;
}
public TestPerson.Builder addCardNumber(String mCardNumber) {
this.mCardNumber = mCardNumber;
return this;
}
}
}
TestPerson pserson = new TestPerson.Builder()
.addPersonName("张三")
.addSex(1)
.addPersonAge(22)
.build();
网友评论