建造者模式听起来很陌生,其实我们在代码中式很容易看见的,但是我们没有去留意,像以Builder结尾的类,就是采用了建造者模式
比如quartz里面的 jobBulider
我们生产一辆汽车,有很多配件,但是配件并不会到一个工厂生产,而是分割在世界各地,而我们主厂,就是要组装这些配件到一台完整的车。这个组装类,就是一个builder
一台汽车的组成:
package com.asiainfo.bulider;
public class CarShip {
private Tire tire;
private Engine engine;
public Tire getTire() {
return tire;
}
public void setTire(Tire tire) {
this.tire = tire;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
}
class Tire{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Engine{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
建造者接口类:
package com.asiainfo.bulider;
public interface ICarBuilder {
public Tire createTire();
public Engine createEngine();
}
建造者类:
package com.asiainfo.bulider;
public class CarBuilder implements ICarBuilder{
public Tire createTire(){
System.out.println("创建轮胎");
return new Tire();
}
public Engine createEngine(){
System.out.println("创建引擎");
return new Engine();
}
}
组装:
package com.asiainfo.test;
import com.asiainfo.bulider.CarBuilder;
import com.asiainfo.bulider.CarShip;
import com.asiainfo.bulider.ICarBuilder;
public class TestBuilder {
public static void main(String[] args) {
ICarBuilder carBuilder = new CarBuilder();
CarShip carShip = new CarShip();
carShip.setEngine(carBuilder.createEngine());
carShip.setTire(carBuilder.createTire());
}
}
这样我们就可以生产出一台汽车了!