引言:
建造者模式(Builder Pattern)是一种设计模式,用于创建复杂对象。它允许你分步骤创建对象,可以灵活地使用不同的步骤来构造对象,从而使得构造过程更加清晰,并且可以复用相同的构造代码。
特点和组成成分:
-
产品(Product):需要被构建的复杂对象。
-
创建者(Builder):抽象接口,定义了构建产品的方法。
-
具体创建者(Concrete Builder):实现创建者接口,实现具体的构建步骤,并返回最终的产品。
-
指导者(Director):负责使用创建者构建最终的产品,也可以包含额外的逻辑来控制构建过程。
示例代码解析
这里小编使用JAVA设计模式书中的实例进行简化,
1.产品类:
这里用游戏角色类充当
package builder;
public class Actor {
private String type;
private String sex;
private String face;
public Actor() {
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getFace() {
return face;
}
public void setFace(String face) {
this.face = face;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "类型:"+type+" 脸型:"+" 性别:"+sex;
}
}
2.抽象创建者
package builder;
public abstract class ActorBuilder {
protected Actor actor=new Actor();
public abstract void buildType();
public abstract void buildSex();
public abstract void buildFace();
public Actor createActor(){
return actor;
}
}
3.具体建造者
package builder;
public class AngelBuilder extends ActorBuilder{
@Override
public void buildFace() {
actor.setFace("美丽");
}
@Override
public void buildSex() {
actor.setSex("女");
}
@Override
public void buildType() {
actor.setType("天使");
}
}
package builder;
public class HeroBuilder extends ActorBuilder{
@Override
public void buildFace() {
actor.setFace("英俊");
}
@Override
public void buildSex() {
actor.setSex("男");
}
@Override
public void buildType() {
actor.setType("英雄");
}
}
4.指导者
package builder;
public class ActorController {
public Actor construct(ActorBuilder ab){
Actor actor;
ab.buildFace();
ab.buildSex();
ab.buildType();
actor=ab.createActor();
return actor;
}
}
创建实例
package builder;
public class Cleint {
public static void main(String[] args) {
ActorController ac=new ActorController();
Actor actor=ac.construct(new HeroBuilder());
System.out.println(actor);
}
}
总结
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创性不同的表示。建造者模式是一种对象创建型模式。