//设置完毕顺序后,就可以直接拿到这个车辆模型
public abstract Car getCar();
}
6.宝马建造者
[java]
package com.bestaone.pattern.builder;
import java.util.ArrayList;
/**
* 具体建造者:实现抽象类定义的所有方法,并且返回一个组件好的对象。
*/
public class BmwBuilder extends CarBuilder {
private Bmw bmw = new Bmw();
@Override
public Car getCar() {
return this.bmw;
}
@Override
public void setSequence(ArrayList
this.bmw.setSequence(sequence);
}
}
7.奔驰建造者
[java]
package com.bestaone.pattern.builder;
import java.util.ArrayList;
/**
* 具体建造者:实现抽象类定义的所有方法,并且返回一个组件好的对象。
*/
public class BenzBuilder extends CarBuilder {
private Benz benz = new Benz();
@Override
public Car getCar() {
return this.benz;
}
@Override
public void setSequence(ArrayList
this.benz.setSequence(sequence);
}
}
8.导演类
[java]
package com.bestaone.pattern.builder;
import java.util.ArrayList;
/**
* 导演:负责安排已有模块的顺序,然后告诉Builder开始建造
*/
public class Director {
private ArrayList
private BenzBuilder benzBuilder = new BenzBuilder();
private BmwBuilder bmwBuilder = new BmwBuilder();
/*
* A类型的奔驰车模型,先start,然后stop,其他什么引擎了,喇叭一概没有
*/
public Benz getABenz() {
//清理场景,这里是一些初级程序员不注意的地方
this.sequence.clear();
//这只ABenzModel的执行顺序
this.sequence.add("start");
this.sequence.add("stop");
//按照顺序返回一个奔驰车
this.benzBuilder.setSequence(this.sequence);
return (Benz) this.benzBuilder.getCar();
}
/*
* B型号的奔驰车模型,是先发动引擎,然后启动,然后停止,没有喇叭
*/
public Benz getBBenz() {
this.sequence.clear();
this.sequence.add("engine boom");
this.sequence.add("start");
this.sequence.add("stop");
this.benzBuilder.setSequence(this.sequence);
return (Benz) this.benzBuilder.getCar();
}
/*
* C型号的宝马车是先按下喇叭(炫耀嘛),然后启动,然后停止
*/
public Bmw getCBmw() {
this.sequence.clear();
this.sequence.add("alarm");
this.sequence.add("start");
this.sequence.add("stop");
this.bmwBuilder.setSequence(this.sequence);
return (Bmw) this.bmwBuilder.getCar();
}
/*
* D类型的宝马车只有一个功能,就是跑,启动起来就跑,永远不停止,牛叉
*/
public Bmw getDBmw() {
this.sequence.clear();
this.sequence.add("start");
this.bmwBuilder.setSequence(this.sequence);
return (Bmw) this.benzBuilder.getCar();
}
/*
* 这里还可以有很多方法,你可以先停止,然后再启动,或者一直停着不动,静态的嘛
* 导演类嘛,按照什么顺序是导演说了算
*/
}