建造者模式和工厂模式有点类似,区别在于:建造者模式创建的是一个完整的对象,侧重于一步步构造;工厂模式创建的是一系列相似的对象。
public class Actor {
private String role;
private String sex;
private String figure;
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getFigure() {
return figure;
}
public void setFigure(String figure) {
this.figure = figure;
}
@Override
public String toString() {
return "Actor{" +
"role='" + role + '\'' +
", sex='" + sex + '\'' +
", figure='" + figure + '\'' +
'}';
}
}
public abstract class ActorBuilder {
Actor actor;
public ActorBuilder() {
this.actor = new Actor();
}
public abstract void buildRole();
public abstract void buildSex();
public abstract void buildFigure();
public Actor createActor() {
return actor;
}
}
public class SaberBuilder extends ActorBuilder {
@Override
public void buildRole() {
actor.setRole("剑士");
}
@Override
public void buildSex() {
actor.setSex("妹子");
}
@Override
public void buildFigure() {
actor.setFigure("苗条");
}
}
public class ActorDirector {
public Actor createActor(ActorBuilder actorBuilder) {
actorBuilder.buildRole();
actorBuilder.buildSex();
actorBuilder.buildFigure();
return actorBuilder.createActor();
}
}
@Test
public void builderTest() {
ActorBuilder saberActor = new SaberBuilder();
ActorDirector actorDirector = new ActorDirector();
Actor saber = actorDirector.createActor(saberActor);
System.out.println(saber.toString());
}