《将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示》
... ...
是不是有点懵,没关系,往下看.
...
其实也就是把创建对象和使用对象的过程分离开来,感觉有点像工厂模式,不不不,其实他们是一类,都属于创建型模式,但还是有区别的,建造者模式主要是针对创建复杂对象的.下面我们来细聊.
建造者模式中有4个角色:
1 leader
2 builder接口
3 builder的实现
4 product 产品
他们是如何协同工作的呢? 我来画个图,稍等... ...
就这? 好吧 上代码... ...
build
public interface CarBuild {
public void builderColor();
public void builderEngine();
public void builderWheel();
public CarProduct builderQiRuiCarProduct();
}
build实现
public class QiRuiCarBuild implements CarBuild {
private CarProduct product;
public QiRuiCarBuild() {
product = new CarProduct();
}
@Override
public void builderColor() {
product.setColor("白色");
System.out.println("白色");
}
@Override
public void builderEngine() {
product.setColor("六缸发动机");
System.out.println("六缸发动机");
}
@Override
public void builderWheel() {
product.setWheel("银色轮翼");
System.out.println("银色轮翼");
}
@Override
public CarProduct builderQiRuiCarProduct() {
return product;
}
}
product
public class CarProduct {
private String color;
private String engine;//发动机 照顾下弱势群体
private String wheel;//轮子
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
public String getWheel() {
return wheel;
}
public void setWheel(String wheel) {
this.wheel = wheel;
}
}
leader
public class Leader {
public CarProduct build(CarBuild build){
System.out.println("第一步 先把发动机装进去");
build.builderEngine();
System.out.println("第二步 把车身颜色一搞");
build.builderColor();
System.out.println("第三步 把轮子装好");
build.builderWheel();
System.out.println("齐活 可以卖了");
return build.builderQiRuiCarProduct();
}
}
代码写完了,测试下成果.
public class BuildTest {
public static void main(String[] args) {
Leader qiRuiLeader = new Leader();
CarBuild build = new QiRuiCarBuild();//需要什么建造者就new什么建造者,也可以是吉利 奔驰 宝马 反正都不要钱
CarProduct product = qiRuiLeader.build(build);
}
}
测试结果:
第一步 先把发动机装进去
六缸发动机
第二步 把车身颜色一搞
白色
第三步 把轮子装好
银色轮翼
齐活 可以卖了
生产汽车是有严格的顺序的,所以必须按照顺序来,
我可以不知道怎么生产,但我可以让知道怎么生产的人生产.
如果理解不妥之处还请在下方留言