前面介绍过工厂模式了,如果我们需要一辆车并不需要知道车是如何、从哪个工厂里生产出来的。今天介绍的建造者模式就要说明一下车子是如何制造的。
一辆汽车需要不同的原件进行组装而成的。
class Tyre{
public void createTyre(){
System.out.println("生产了一个轮胎");
}
}
class Seat{
public void createSeat(){
System.out.println("生产了一个座椅");
}
}
class Car{
Car(Tyre t,Seat s){
System.out.println("生产了一辆汽车!");
}
}
工厂里的工人们知道如何制造车子的轮胎、方向盘、底盘、发动机等等。。。
//工人懂得制造部件和汽车,但是不知道需要什么零件,先造那个、后造哪个
interface AbstractWorker{
public Tyre createTyre();
public Seat createSeat();
public Car getCar();
}
class Worker implements AbstractWorker{
private Tyre tyre;
private Seat seat;
public Seat createSeat() {
return seat = new Seat();
}
public Tyre createTyre() {
// TODO Auto-generated method stub
return tyre = new Tyre();
}
public Car getCar() {
// TODO Auto-generated method stub
if(tyre!=null||seat!=null){
return new Car(tyre,seat);
}
System.out.println("没有设计师,造不出啊!");
return null;
}
但是作为高级工人,他们并不知道应该先做那个后做哪个,他们需要一位设计师,指挥他们。虽然设计师并不会制造零件。。(知识改变命运啊)
//设计师指导工人制造汽车
class Designer{
private Worker worker;
Designer(Worker worker){
this.worker = worker;
}
void createCar(){
worker.createSeat();
worker.createSeat();
}
}
执行主函数,就可以获得自己心仪的汽车啦!
public class BuilderPattern {
public static void main(String[] args){
Worker woker = new Worker();
Designer d = new Designer(woker);
d.createCar();
woker.getCar();
}
}