建造者模式能够将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
建造者与工厂模式相似,与抽象工厂的区别是:建造者模式里,有个指导者,由指导者来管理建造者,用户与指导者相互联系,指导者联系建造者,最终得到产品。即建造者模式可以强制实行一种分步骤进行的建造过程。
更通俗点说,工厂模式更多的是注重一个零件的制造,而建造者模式创造出来的是可以组合的产品。
以下例子是根据汽车部件组装问题为背景
//建造者
public interface Builder{
void buildPartA();//构造车头
void buildPartB();//构造车身
void buildPartC();//构造车尾
public Product getResult()//获取车
}
//建造者工具
public class CarConcreateBuilder implments Builder{
Car car=new Car();
public void buildPartA(){
//具体构建A的代码;
car.setHead("车头");
System.out.println("构造车头");
}
public void buildPartB(){
//具体构建B的代码;
car.setHead("车身");
System.out.println("构造车身");
}
public void buildPartC(){
//具体构建C的代码;
car.setHead("车尾");
System.out.println("构造车尾");
}
public Product getResult(){
//返回最后组装的结果
return car;
}
}
//指导者
public class Director{
private Builder builder;
public Director(Builder builder){
this.builder=builder;
}
public void construct(){
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
//产品
public class Car{
//车头
private String head;
//车身
private String body;
//车尾
private String tail;
//set()-get()方法
}
---------------------客户端------------------------------------------------------
public class Client{
public static void main(String args[]){
//实例一个建造者
Builder carConcreateBuilder=new CarConcreateBuilder ();
//实例一个指导者
Director director =new Director(carConcreateBuilder);
// 指导Car类生产
director.construct();
//获得产品
Car car =carConcreateBuilder.getResult();
}
}
----------------一起学习,一起进步-------------------------------------------------------