1. 概念
构造者模式是较为复杂的创建型模式,它将客户端与包含多个组成部分的复杂对象的创建过程分离。客户端无需知道具体的构造过程,只需要与构造器打交道即可。构建与表示分离。
2. 使用场景
当构造一个对象需要很多参数的时候,并且参数的个数或者类型不固定的时候。
3. 实例
abstract class Builder {
protected Product product = new Product();
public abstract void buildPartA();
public abstract void buildPartB();
public abstract void buildPartC();
public Product getResult() {
return product;
}
}
public class ConcreateBuilder extends Builder {
@Override
public void buildPartA() {
}
@Override
public void buildPartC() {
}
@Override
public void buildPartB() {
}
}
public class Director {
private Builder builder;
public Director(Builder builder) {
this.builder = builder;
}
public void setBuilder(Builder builder) {
this.builder = builder;
}
public Product construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC();
return builder.getResult();
}
}
public class Product {
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;
}
private String partA;
private String partB;
private String partC;
}
public class BuilderClient {
public static void main(String[] args) {
Builder builder = new ConcreateBuilder();
Director director = new Director(builder);
Product product = director.construct();
}
}
4. 总结
Builder:它为创建一个产品Product对象的各个部件指定抽象接口
ConcreateBuilder:它实现了Builder接口,实现各个部件的具体构造和装配方法
Product:它是被构建的复杂对象,包含多个组成部件
Director:指挥者又称为导演类,它负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系
不过在具体的使用中,可能客户端直接调用了ConcreateBuilder中的实际方法,而省略了Director。
5. 模式特性
松散耦合:生成器模式可以用同一个构建算法构建出表现上完全不同的产品,实现产品构建和产品表现上的分离。
可以很容易的改编产品的内部表示,同时又不用客户端再次适配
更好的复用性:生成器模式很好的实现构建算法和具体产品实现的分离
会产生多余的Builder对象,消耗内存
对象的构建过程暴露
6. 在android中的实际运用
AlertDialog
网友评论