定义
理解
一些概念
产品的内部表象
对象性质的建造
角色
UML类图
Java实现
产品product
public class Product {
/**
* 定义一些关于产品的操作
*/
private String part1;
private String part2;
public String getPart1() {
return part1;
}
public void setPart1(String part1) {
this.part1 = part1;
}
public String getPart2() {
return part2;
}
public void setPart2(String part2) {
this.part2 = part2;
}
}
抽象建造者
public interface Builder {
public void buildPart1();
public void buildPart2();
public Product retrieveResult();
}
具体建造者
public class ConcreteBuilder implements Builder {
private Product product = new Product();
/**
* 产品零件建造方法1
*/
@Override
public void buildPart1() {
//构建产品的第一个零件
product.setPart1("编号:9527");
}
/**
* 产品零件建造方法2
*/
@Override
public void buildPart2() {
//构建产品的第二个零件
product.setPart2("名称:XXX");
}
/**
* 产品返还方法
*/
@Override
public Product retrieveResult() {
return product;
}
}
导演类
public class Director {
/**
* 持有当前需要使用的建造器对象
*/
private Builder builder;
/**
* 构造方法,传入建造器对象
* @param builder 建造器对象
*/
public Director(Builder builder){
this.builder = builder;
}
/**
* 产品构造方法,负责调用各个零件建造方法
*/
public void construct(){
builder.buildPart1();
builder.buildPart2();
}
}
客户端测试
public class Client {
public static void main(String[]args){
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.retrieveResult();
System.out.println(product.getPart1());
System.out.println(product.getPart2());
}
}
//创建build
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
//向build中set各种建造dialog的"原材料",在代码结构中,这些原材料都是build自带的,但在实际开发中,经常需要传入一些对象来创造不同的产品
builder.setTitle('simple dialog').setIcon(R.drawable.tools).setPositiveButton(builder);
//调用create方法创建对话框
AlertDialog dialog = builder.create();
//显示对话框
dialog.show();
//以上代码可简化为如下形式,在实际开发中我们经常这么用
new AlertDialog.Builder(mContext)..setTitle('simple dialog').setIcon(R.drawable.tools).setPositiveButton(builder).create().show();