建造者模式
特征 / 与工厂模式的区别:建造产品具有共同属性,多参数,特别是当一部分参数只是可选参数的时候,避免重载多个构造函数,同时避免缺省值的问题(Builder 所有参数可以事先初始化)
应用场景:Android——自定义控件(eg:通知、对话框)
基础结构:
一、抽象基类和抽象内部类 Builder
- 通用属性
- 对抽象基类属性进行 build 的方法
- 返回抽象类对象的创建方法 create
二、抽象实现类和抽象实现内部类 Builder
- 继承抽象基类
- 自有属性
- 继承抽象基类 Builder
- 重写实现方法具体的属性赋值
- 对自有属性进行 build 的方法
- 返回抽象实现类对象的创建方法 create
三、Director类
- 负责属于基类纲目对象的总体构建
- 隐藏具体步骤和构建细节,使用友好
- 接收 Builder 参数
- 使用 construct 方法,使用时提供所有构建参数
使用:
创建具体Builder - mBuilder
创建Director,接收mBuilder
通过Director的construct使用mBuilder建造方法建造同类产品
通过mBuilder的create方法返回具体对象
示例:
抽象基类和抽象内部类 Builder:
public abstract class Computer {
protected String mBoard;
protected String mDisplay;
protected String mOS;
protected Computer() {
}
// 设置CPU核心数
public void setBoard(String board) {
mBoard = board;
}
// 设置内存
public void setDisplay(String display) {
mDisplay = display;
}
// 设置操作系统
public abstract void setOS();
@Override
public String toString() {
return "Computer{" +
"mBoard='"