在某些情况下,一个复杂对象会有一些重要的性质,在他们没有恰当的值前,对象不能作为一个完整的产品使用。在某些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。这些情况使得性质本身的建造涉及到复杂的商业逻辑。建造模式利用一个导演者对象和具体建造者对象一个一个的造出所有的零件,从而建造出完整的产品对象。建造者模式将产品的结构和产品的建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割开来,达到责任划分和封装的目的。
结构如下图所示:
对于构建多个产品类的,实现图如下所示:
其关键点就是,封装了复杂对象的建造过程。与抽象工厂类似,但是抽象工厂模式中,每一次工厂对象被调用都会返回一个完整的产品对象,而客户端有可能会决定把这个产品组装成一个更大更复杂的产品,也有可能不会。建造类则不同,它一点一点地建造出一个复杂的产品,而这个产品的组装过程就发生在建造者角色内部。建造者模式的客户端拿到的是一个最后产品。
换言之,抽象工厂模式处在更加具体的尺度上,而建造模式则处在更加宏观的尺度上。