前言
沒什么用,類似于builder.build
UML類圖
代碼示例
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 {@Overridepublic void buildFrame() {bicycle.setFrame("Aluminum Frame");}@Overridepublic void buildTires() {bicycle.setTires("Knobby Tires");}@Overridepublic Bicycle build() {buildFrame();buildTires();return bicycle;}
}class RoadBicycleBuilder extends AbsBicycleBuilder {@Overridepublic void buildFrame() {bicycle.setFrame("Carbon Frame");}@Overridepublic void buildTires() {bicycle.setTires("Slim Tries");}@Overridepublic Bicycle build() {buildFrame();buildTires();return bicycle;}
}