前言
没什么用,类似于builder.build
UML类图

代码示例
java
package com.sw.learn.pattern.B_create.e_builder;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
String bicycleType = sc.next();
AbsBicycleBuilder bicycleBuilder = null;
if ("mountain".equals(bicycleType)) {
bicycleBuilder = new MountainBicycleBuilder();
}
if ("road".equals(bicycleType)) {
bicycleBuilder = new RoadBicycleBuilder();
}
if (bicycleBuilder == null) {
break;
}
Bicycle bicycle = bicycleBuilder.build();
System.out.println(bicycle.getFrame() + " " + bicycle.getTires());
}
}
}
class Bicycle {
private String frame;
private String tires;
public String getFrame() {
return frame;
}
public void setFrame(String frame) {
this.frame = frame;
}
public String getTires() {
return tires;
}
public void setTires(String tires) {
this.tires = tires;
}
}
abstract class AbsBicycleBuilder {
protected Bicycle bicycle = new Bicycle();
abstract public void buildFrame();
abstract public void buildTires();
abstract public Bicycle build();
}
class MountainBicycleBuilder extends AbsBicycleBuilder {
@Override
public void buildFrame() {
bicycle.setFrame("Aluminum Frame");
}
@Override
public void buildTires() {
bicycle.setTires("Knobby Tires");
}
@Override
public Bicycle build() {
buildFrame();
buildTires();
return bicycle;
}
}
class RoadBicycleBuilder extends AbsBicycleBuilder {
@Override
public void buildFrame() {
bicycle.setFrame("Carbon Frame");
}
@Override
public void buildTires() {
bicycle.setTires("Slim Tries");
}
@Override
public Bicycle build() {
buildFrame();
buildTires();
return bicycle;
}
}