用于组装具有复杂结构的实例。
示例
编写“文档”。编写出的文档具有以下结构:
- 含有一个标题
- 含有几个字符串
- 含有条目项目
类图
Builder类
1 | public abstract class Builder { |
Director类
1 | public class Director { |
TextBuilder类
1 | public class TextBuilder extends Builder { |
HTMLBuilder类
1 | import java.io.FileWriter; |
Main类
1 | public class Main { |
运行结果
1 | ============================== |
1 | <html><head><title>Greeting</title></head><body> |
登场角色
Builder(建造者)
Builder角色负责定义用于生成实例的接口(API)。Builder角色中准备了用于生成实例的方法。在示例程序中,由Builder类扮演此角色。
ConcreteBuilder(具体的建造者)
ConcreteBuilder角色是负责实现Builder角色的接口的类(API)。这里定义了在生成实例时实际被调用的方法。此外,在ConcreteBuilder角色中还定义了获取最终生成结果的方法。在示例程序中,由TextBuilder类和HTMLBuilder类扮演此角色。
Director(监工)
Director角色负责使用Builder角色的接口(API)来生成实例。它并不依赖于ConcreteBuilder角色。为了确保不论ConcreteBuilder角色是如何被定义的,Director角色都能正常工作,它只调用在Builder角色中被定义的方法。在示例程序中,由Director类扮演此角色。
Client(使用者)
该角色使用了Builder模式。在示例程序中,由Main类扮演此角色。