2014-10-08 51 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