Builder模式:组装具有复杂结构的实例
角色:
Builder(建造者):
负责定义用于生成实例的接口(API)。
ConcreteBuilder(具体的建造者):
负责实现Builder角色的接口的类。此外,定义了获取最终结果的方法。
Director(监工):
Director角色负责使用Builder角色的接口来生成实例。它不依赖于ConcreteBuilder角色。
它只用调用Builder角色定义的方法。
关于谁知道什么的问题
在面向对象编程中,谁知道什么是非常重要的。也就是说,需要在编程时注意哪个类可以使用哪个方法以及使用这个方法到底好不好。
在建造者模式中,Main类并不知道Builder类,它只调用了Direct类方法来编写文档,但是它并不知道真正使用的是哪个类。Direcotr类不知道自己使用的究竟是Builder类的哪个子类。
只有不知道子类才能替换。正是因为可以替换,组件才具有高价值。必须时刻关注这种“可替换性”。