java设计模式04(建造者模式)
2019-04-09 本文已影响0人
刺风有道
建造者模式是一种对象创建型模式,它将客户端(调用者)与包含多个部件的复杂对象的创建过程分离,客户端无须知道对象的内部组成部分与装配方式,只需要知道所需建造者的类型即可。建造者模式关注如何一步一步地创建一个复杂对象,不同的建造者定义了不同的创建过程。
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式的结构与实现:
1.Builder(抽象建造者):创建一个产品对象的各个部件指定抽象接口,且创建一个返回产品对象的方法。 Builder既可以时抽象类,也可以时接口。
public abstract class Builder {
protected Product product=new Product();
public abstract void buildHead();
public abstract void buildHand();
public abstract void buildFoot();
public Product getResult() {
return product;
}
}
2.ConcreteBuilder(具体建造者):实现了Builder接口,实现各个部件的具体构造和装配方法,定义并明确所创建的复杂对象,还可以提供一个方法返回创建好的产品对象。
public class ConcreteBuilder extends Builder {
@Override
public void buildHead() {
product.setHead("head");
}
@Override
public void buildHand() {
product.setHand("hand");
}
@Override
public void buildFoot() {
product.setFoot("foot");
}
}
3.Product(产品):被构造的复杂对象,包含多个组成部件,具体建造者创建它的内部表示并定义它的装配过程。
public class Product {
private String head;
private String hand;
private String foot;
public String getHead() {
return head;
}
public void setHead(String head) {
this.head = head;
}
public String getHand() {
return hand;
}
public void setHand(String hand) {
this.hand = hand;
}
public String getFoot() {
return foot;
}
public void setFoot(String foot) {
this.foot = foot;
}
@Override
public String toString() {
return "Product [head=" + head + ", hand=" + hand + ", foot=" + foot + "]";
}
}
4.Director(指挥者):负责安排复杂对象的建造次序,控制复杂对象的制造过程,指挥者与抽象建造者之间存在关联关系,可以在方法中调用建造者对象的部件构造和装配方法。
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder=builder;
}
public Product construct() {
builder.buildHead();
builder.buildHand();
builder.buildFoot();
return builder.getResult();
}
}
5.Test:
public class Test {
public static void main(String[] args) {
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
Product product = director.construct();
System.out.println(product);
}
}