建造者模式
/*
* 轮胎
*/
class Tyre {
private String name;
public Tyre(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/*
* 引擎
*/
class Engine {
private String name;
public Engine(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/*
* 汽车的类
*/
public class Car {
private Tyre tyre; // 轮胎
private Engine engine; // 引擎
public Tyre getTyre() {
return tyre;
}
public void setTyre(Tyre tyre) {
this.tyre = tyre;
}
public Engine getEngine() {
return engine;
}
public void setEngine(Engine engine) {
this.engine = engine;
}
}
public interface Builder {
/**
* 构造引擎的方法
*/
Engine buliderEngine();
/**
* 构造轮胎的方法
*/
Tyre builderTyre();
}
/*
* 具体的建造者,主要是构造汽车的部件
*/
public class BuilderCar implements Builder {
@Override
public Engine buliderEngine() {
System.out.println("构造汽车发动机");
return new Engine("傻逼牌发动机");
}
@Override
public Tyre builderTyre() {
System.out.println("构造汽车轮胎");
return new Tyre("傻逼牌轮胎");
}
}
/*
* 指挥者的接口,用来按照顺序组装汽车
*/
public interface Director {
Car CreateCar();
}
/*
* 指挥者的实现类
*/
public class DirectorCar implements Director {
private Builder builder; // 建造者的对象
/**
* 构造方法,主要用来初始化建造者对象
*
* @param builder Builder的对象
*/
public DirectorCar(Builder builder) {
this.builder = builder;
}
@Override
public Car CreateCar() {
Car car = new Car(); // 创建汽车对象
Engine engine = builder.buliderEngine(); // 构建发动机
Tyre tyre = builder.builderTyre(); // 构造轮胎
car.setEngine(engine); // 设置属性
car.setTyre(tyre); // 设置属性
return car; // 返回构造好的汽车
}
}
public class Client {
public static void main(String[] args) {
Director director = new DirectorCar(new BuilderCar()); // 创建指挥者的对象
Car car = director.CreateCar(); // 获取组装完成的
System.out.println(car.getEngine().getName()); // 输出引擎的名字
System.out.println(car.getTyre().getName()); // 输出轮胎的名字
}
}