2014-10-08 53 views
2

Joshua Bloch建议将构建器模式作为具有太多构造选项或太多构造器参数的类的解决方案。Java Builder模式(Bloch)是否真的与GOF构建器相关?

GOF构建器基本上打算“将对象的构造与其表示分开”,或者基本上为具有相同基类的不同最终产品创建抽象构造算法。

在我看来,除了两者都是创作模式之外,这两者不仅不是相同的模式,而且甚至没有密切相关。

Bloch的Java Builder真的是一种类型的构建器吗?

+0

据我所知,唯一不同的是,在GOF Builder模式中,他们不使用流利的成语。但是两者的目的和目的是相同的:通过将构建逻辑与最终对象表示分离来避免伸缩构造器。 – biziclop 2014-10-08 12:18:46

回答

1

我想,是的。布洛赫的例子没有显式的Director类。在他的例子中,你正在建造的课程是导演。在其他一些课程中,您将以另一种方式构建另一位导演。在GOF中,导演更加清晰。然而,你建立你正在获得相同接口的对象(或子类相同的基类)。

+1

想想看,隐式导向方法的一个后果是另一个区别:您可以使用现有对象作为原型轻松创建构建器。有了明确的导演,你必须公开对象的整个内部状态才能这样做。 – biziclop 2014-10-08 12:22:59