有些时候很难一次性组装具有复杂结构的实例,用于组装复杂结构实例的模式就是建造者模式。
类图:

这里Builder类声明了编写文档的方法,具体实现交由其子类。HTMLBuilder和TextBuilder继承了Builder,用于生成html网页和普通文本。Director持有一个Builder的实例,用于指挥构造文本。Main函数利用Director来生成文档。
代码:
1 | public abstract class Builder { |
1 | import java.io.*; |
1 | public class Director { |
Director类中持有的是Buider实例,并不关心是TextBuilder或者是HTMLBuilder,因此可以任意替换具体的Builder,而可以任意替换正是设计模式的目标。
1 | public class Main { |
Main函数对于具体的构造文本过程同样一无所知,只是调用了Director的construct()方法。Director修改时,Main函数可以保持不变。