您的位置:首页 > 其它

生成器模式——对象创建型模式

2016-08-29 17:22 190 查看
一、意图

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以构建不同的表示。

二、适用性

在以下情况下使用Builder模式

当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

当构造过程必须允许被构造的对象有不同的表示时。

三、结构



四、代码

Builder

public abstract class Builder {
abstract void buildPartA(String text);
abstract void buildPartB(String text);
abstract void buildPartC(String text);
abstract Product getResult();
}


具体的Builder

public class ConcreteBuilder extends Builder {

private String partA ;
private String partB;
private String partC;

@Override
void buildPartA(String text) {
this.partA = text;
}

@Override
void buildPartB(String text) {
this.partB = text;
}

@Override
void buildPartC(String text) {
this.partC = text;
}

@Override
Product getResult() {
Product product = new Product();
product.setPartA(partA);
product.setPartB(partB);
product.setPartC(partC);
return product;
}
}


Product

public class Product {
private String partA;
private String partB;
private String partC;

public String getPartA() {
return partA;
}

public void setPartA(String partA) {
this.partA = partA;
}

public String getPartB() {
return partB;
}

public void setPartB(String partB) {
this.partB = partB;
}

public String getPartC() {
return partC;
}

public void setPartC(String partC) {
this.partC = partC;
}

@Override
public String toString() {
return "Product{" +
"partA='" + partA + '\'' +
", partB='" + partB + '\'' +
", partC='" + partC + '\'' +
'}';
}
}


Director

public class Director {
private Builder mBuilder;

public Director(Builder builder){
this.mBuilder = builder;
}

public Product getProduct(){
return mBuilder.getResult();
}
}


Client

public class Client {
public static void main(String[] args){
Builder builder = new ConcreteBuilder();
builder.buildPartA("partA");
builder.buildPartB("partB");
builder.buildPartC("partC");

Director director = new Director(builder);

System.out.println(director.getProduct());
}

}
执行结果:
Product{partA='partA', partB='partB', partC='partC'}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式