在某赛车游戏中,赛车包括方程式赛车、场地越野赛车、运动汽车、卡车等类型,不同类型的赛车的车身、发动机、轮胎、变速箱等部件有所区别。玩家可以自行选择赛车类型,系统将根据玩家的选择创建出一辆完整的赛车。现采用建造者模式实现赛车的构建
类图:
代码实现:
Builder:
package com.coin.builder;
import com.coin.product.car;
public abstract class Builder {
car car=new car();
public abstract void createEngine();
public abstract void createBody();
public abstract void createTries();
public abstract void createTransmission();
public abstract car getCar();
}
offroadCarBuilder:
package com.coin.builder;
import com.coin.product.car;
public class offRoadCarBuilder extends Builder{
@Override
public void createEngine() {
car.setEngine("越野车发动机");
}
@Override
public void createBody() {
car.setBody("越野车车身");
}
@Override
public void createTries() {
car.setTires("越野车轮胎");
}
@Override
public void createTransmission() {
car.setTransmission("越野车变速箱");
}
@Override
public car getCar() {
System.out.println("组装成功————越野车");
return car;
}
}
racingCarBuilder:
package com.coin.builder;
import com.coin.product.car;
public class racingCarBuilder extends Builder{
@Override
public void createEngine() {
car.setEngine("赛车发动机");
}
@Override
public void createBody() {
car.setBody("赛车车身");
}
@Override
public void createTries() {
car.setTires("赛车轮胎");
}
@Override
public void createTransmission() {
car.setTransmission("赛车变速箱");
}
@Override
public car getCar() {
System.out.println("组装成功————赛车");
return car;
}
}
sportsCarBuilder:
package com.coin.builder;
import com.coin.product.car;
public class sportsCarBuilder extends Builder{
@Override
public void createEngine() {
car.setEngine("运动汽车发动机");
}
@Override
public void createBody() {
car.setBody("运动汽车车身");
}
@Override
public void createTries() {
car.setTires("运动汽车轮胎");
}
@Override
public void createTransmission() {
car.setTransmission("运动汽车变速箱");
}
@Override
public car getCar() {
System.out.println("组装成功————运动汽车");
return car;
}
}
product:
package com.coin.product;
public class car {
private String engine;//发动机
private String body;//车身
private String tires;//轮胎
private String transmission;//变速箱
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getTires() {
return tires;
}
public void setTires(String tires) {
this.tires = tires;
}
public String getTransmission() {
return transmission;
}
public void setTransmission(String transmission) {
this.transmission = transmission;
}
@Override
public String toString() {
return "car{" +
"engine='" + engine + '\'' +
", body='" + body + '\'' +
", tires='" + tires + '\'' +
", transmission='" + transmission + '\'' +
'}';
}
}
director:
package com.coin;
import com.coin.builder.Builder;
import com.coin.product.car;
public class Director {
private Builder builder;
public Director(Builder builder){
this.builder=builder;
}
public car construct(){
builder.createBody();
builder.createEngine();
builder.createTransmission();
builder.createTries();
car car=builder.getCar();
return car;
}
}
测试:
package com.coin;
import com.coin.builder.offRoadCarBuilder;
import com.coin.builder.racingCarBuilder;
import com.coin.builder.sportsCarBuilder;
public class Test {
public static void main(String[] args) {
Director director=new Director(new racingCarBuilder());
System.out.println(director.construct());
System.out.println("——————————————————————————————");
Director director1=new Director(new offRoadCarBuilder());
System.out.println(director1.construct());
System.out.println("——————————————————————————————");
Director director2=new Director(new sportsCarBuilder());
System.out.println(director2.construct());
}
}
运行结果:
新人一个首次学习,如有不足,多多指教。