//抽象生产者
public interface Builder {
void buildPartA();
void buildPartB();
void buildPartC();
Product buildProduct();
}
//具体生产者
public class ConcreteBuilder implements Builder {
Product product;
@Override
public void buildPartA() {
}
@Override
public void buildPartB() {
}
@Override
public void buildPartC() {
}
@Override
public Product buildProduct() {
return product;
}
}
//产品由各个组件组成
public class Product {
//partA
//partB
//partC
}
//指导者,产品生产流程规范
public class Director {
Builder builder;
//由具体的生产者来生产产品
public Director(Builder builder) {
this.builder = builder;
}
//生产流程
public void buildProduct(){
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
}
}
public static void main(String[] args) {
//只需要关心具体建造者,无需关心产品内部构建流程。
//如果需要其他的复杂产品对象,只需要选择其他的建造者.
Builder builder = new ConcreteBuilder();
//把建造者注入指导者
Director director = new Director(builder);
//指导者负责流程把控
director.buildProduct();
// 建造者返回一个组合好的复杂产品对象
Product product = builder.buildProduct();
}
package com.qbz.test;
class Car {
// frame
String frame;
// engine
String engine;
// wheel
String wheel;
// ...
}
interface Builder {
void buildFrame();
void buildEngine();
void buildWheel();
Car buildCar();
}
// 911制造者
class Builder911 implements Builder {
Car car = new Car();
@Override
public void buildFrame() {
System.out.println("制造911骨架");
}
@Override
public void buildEngine() {
System.out.println("制造911引擎");
}
@Override
public void buildWheel() {
System.out.println("制造911车轮");
}
@Override
public Car buildCar() {
System.out.println("911汽车各部组装完毕");
return car;
}
}
// Cayma制造者
class BuilderCayma implements Builder {
Car car = new Car();
@Override
public void buildFrame() {
System.out.println("制造Cayma骨架");
}
@Override
public void buildEngine() {
System.out.println("制造Cayma引擎");
}
@Override
public void buildWheel() {
System.out.println("制造Cayma轮子");
}
@Override
public Car buildCar() {
System.out.println("Cayma汽车各部组装完毕");
return car;
}
}
// 指导者
class Director {
private Builder builder;
// 传入具体制造者
public Director(Builder builder) {
this.builder = builder;
}
public Car build() {
// 制造汽车各个组件
builder.buildEngine();
builder.buildFrame();
builder.buildWheel();
return builder.buildCar();
}
}
public class Main {
public static void main(String[] args) {
// 制造一台911
Builder builder = new Builder911();
Director director = new Director(builder);
Car car911 = director.build();
// 制造Cayma
Builder builder2 = new BuilderCayma();
Director director2 = new Director(builder2);
Car carCayma = director2.build();
}
}
制造911引擎
制造911骨架
制造911车轮
911汽车各部组装完毕
制造Cayma引擎
制造Cayma骨架
制造Cayma轮子
Cayma汽车各部组装完毕