集合起来创建复合对象–某个类具有不同的属性
以构造一个汽车为例
- 车的抽象类
abstract class builder{ //假设一辆车 车的抽象类
//车轮
public abstract void buildWheel();
//汽油
public abstract void buildOil();
//螺丝
public abstract void buildScrew();
//获得车
public abstract Car GetCar();
}
- 汽修人员需要具备的本领
//汽修人员组装车
class People{
public void assemble(builder buil){
buil.buildOil();
buil.buildScrew();
buil.buildWheel();
}
}
- 将这些本领具体化进行解释
//具体的装机人员
class AssPeople extends builder{
Car c=new Car();
@Override
public void buildWheel() {
c.Add("wheel");
}
@Override
public void buildOil() {
c.Add("oil");
}
@Override
public void buildScrew() {
c.Add("screw");
}
@Override
public Car GetCar() {
return c;
}
}
- 如何进行组装汽车
class Car{ //汽车组件集合
private List<String> list=new ArrayList<String>();
public void Add(String parts){
list.add(parts);
}
public void print(){
for(int i=0;i<list.size();i++){
System.out.println("汽车"+list.get(i)+"组装……");
}
System.out.println("汽车组装完成");
}
}
- 类进行实例化,进行方法的调用
- 可以倒着看,要想打印出car,需要得到car,car需要进行组装,拥有具体本领的人员进行组装
- people --Asspeople – assemble()-- car
public class Builder {
public static void main(String[] args) {
People p=new People();
builder bu=new AssPeople();
p.assemble(bu);
Car car=bu.GetCar();
car.print();
}
}