天天看點

《設計模式之禅》——建立類模式大PK1.工廠方法模式VS建造者模式2.抽象工廠模式VS建造者模式

1.工廠方法模式VS建造者模式

      工廠方法模式注重的是整體對象的建立方法,而建造者模式注重的是部件建構的過程,旨在通過一步步的精确構造建立出一個複雜的對象。

1.1最佳實踐

      工廠方法模式和建造者模式都屬于對象建立類模式,都用來建立類的對象。但它們之間的差別還是比較明顯的:

  • 意圖不同

          在工廠方法模式裡,我們關注的是一個産品整體,例如超人整體,無須關心産品的各部分是如何建立出來的;但在建造者模式中,一個具體産品的産生是依賴各個部件的産生以及裝配順序。簡單地說,工廠模式是一個對象建立的粗線條應用,建造者模式則是通過細線條勾勒出一個複雜對象,關注的産品組成部分的建立過程。

  • 産品的複雜度不同

          工廠方法模式建立的産品一般都是單一性質的産品,而建造者模式建立的則是一個複合産品。工廠方法模式的對象粒度比較粗,建造者模式的産品對象粒度比較細。

2.抽象工廠模式VS建造者模式

      抽象工廠模式實作對産品家族的建立,不需要關心建構過程,隻關心什麼産品由什麼工廠生産即可。

2.1最佳實踐

      抽象工廠模式中使用“工廠”來描述建構者,就好比一個一個的工廠,它是從一個更高層次去看對象的建構,具體到工廠内部還有很多的工廠中的房間。而在建造者模式中使用“工廠中的房間”來描述建構者。不同的工廠中的房間完成不同的建立和裝配任務,它更關心過程。

      抽象工廠模式比建造者模式的尺度要大,它關注産品整體,而建造者模式關注建構過程,是以建造者模式可以很容易地建立出一個嶄新的産品,隻要導演類能夠提供具體的工藝流程。也正因為如此,兩者的應用場景截然不同,如果希望屏蔽對象的建立過程,隻提供一個封裝良好的對象,則可以選擇抽象工廠方法模式。而建立者模式可以用在建構的裝配方面,如通過裝配不同的元件或者相同元件的不同順序,可以産生出一個新的對象,它可以産生一個非常靈活的架構,友善地擴充和維護系統。

繼續閱讀