1.工廠方法模式VS建造者模式
工廠方法模式注重的是整體對象的創建方法,而建造者模式注重的是部件構建的過程,旨在通過一步步的精確構造創建出一個複雜的對象。
1.1最佳實踐
工廠方法模式和建造者模式都屬於對象創建類模式,都用來創建類的對象。但它們之間的區別還是比較明顯的:
- 意圖不同
在工廠方法模式裏,我們關注的是一個產品整體,例如超人整體,無須關心產品的各部分是如何創建出來的;但在建造者模式中,一個具體產品的產生是依賴各個部件的產生以及裝配順序。簡單地說,工廠模式是一個對象創建的粗線條應用,建造者模式則是通過細線條勾勒出一個複雜對象,關注的產品組成部分的創建過程。 - 產品的複雜度不同
工廠方法模式創建的產品一般都是單一性質的產品,而建造者模式創建的則是一個複合產品。工廠方法模式的對象粒度比較粗,建造者模式的產品對象粒度比較細。
2.抽象工廠模式VS建造者模式
抽象工廠模式實現對產品家族的創建,不需要關心構建過程,只關心什麼產品由什麼工廠生產即可。
2.1最佳實踐
抽象工廠模式中使用“工廠”來描述構建者,就好比一個一個的工廠,它是從一個更高層次去看對象的構建,具體到工廠內部還有很多的車間。而在建造者模式中使用“車間”來描述構建者。不同的車間完成不同的創建和裝配任務,它更關心過程。
抽象工廠模式比建造者模式的尺度要大,它關注產品整體,而建造者模式關注構建過程,因此建造者模式可以很容易地創建出一個嶄新的產品,只要導演類能夠提供具體的工藝流程。也正因爲如此,兩者的應用場景截然不同,如果希望屏蔽對象的創建過程,只提供一個封裝良好的對象,則可以選擇抽象工廠方法模式。而創建者模式可以用在構建的裝配方面,如通過裝配不同的組件或者相同組件的不同順序,可以產生出一個新的對象,它可以產生一個非常靈活的架構,方便地擴展和維護系統。