定义: 将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
主要作用: 提供了一种创建对象的最佳方式,在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)。
例子:造汽车 & 买汽车
工厂(建造者模式):负责制造汽车(组装过程和细节在工厂内)
汽车购买者(用户):你只需要说出你需要的型号(对象的类型和内容),然后直接购买就可以使用了
(不需要知道汽车是怎么组装的(车轮、车门、发动机、方向盘等等))
实例分析:造房子
假设造房简化为以下步骤:
1.地基 2.钢筋工程 3.铺电线 4.粉刷
如果要盖一栋房子,首先要找一个建筑公司或者工程承包商(指挥者),承包商将客户对产品的需求划分为各个部件的建造请求(Builder),然后指挥工人(具体建造者)过来造房子(产品)。
抽象的建造者:
package yang.factorymode.buildermode;
//抽象的建造者,定义需求(方法)
public abstract class Builder {
abstract void buildA(); //地基
abstract void buildB(); //钢筋工程
abstract void buildC(); //电线
abstract void buildD(); //粉刷
//完工,得到产品
abstract Product getProduct();
}
要得到的产品:
package yang.factorymode.buildermode;
//产品:房子
public class Product {
private String buildA;
private String buildB;
private String buildC;
private String buildD;
public String getBuildA() {
return buildA;
}
public void setBuildA(String buildA) {
this.buildA = buildA;
}
public String getBuildB() {
return buildB;
}
public void setBuildB(String buildB) {
this.buildB = buildB;
}
public String getBuildC() {
return buildC;
}
public void setBuildC(String buildC) {
this.buildC = buildC;
}
public String getBuildD() {
return buildD;
}
public void setBuildD(String buildD) {
this.buildD = buildD;
}
@Override
public String toStr