建造者模式讲解
我們來學習建造者模式,首先我們來看一下建造者的定義和類型,定義是將一個復雜對象的構建與他的表示進行分離,使得同樣的構建過程可以創建不同的表示,定義相對抽象一些,但是一會我們使用的時候,就會知道這段定義的含義,這里面是說建造者的一個特征,用戶只需知道建造的類型就可以得到他們,建造過程及細節呢,是不需要知道的,他的類型是屬于創建型的,那這個定義通俗的講,就是說建造者模式,就是構建一個包含多個組件,相同的構建過程呢可以創建不同的產品,那比較適合于哪些流程比較固定,但是順序不一定固定的,那第二條這個特征是說,對象的創建過程及細節呢,我不需要知道,但是我同樣可以創建復雜的對象,打個比方,我們做一盤菜,那一盤菜構建過程相對復雜,有的喜歡先放鹽,也有的喜歡后放鹽的,但是放鹽這個組件,一定要加的,那我們接著看一下
建造者的適用場景,如果一個對象有非常復雜的內部結構,我們可以理解他有很多很多的屬性,或者需要一個很復雜的步驟,并且想把復雜的對象的創建和使用進行分離,這兩種場景都比較適合使用建造者
我們接著來看一下建造者的優點是什么,封裝性好,創建和使用分離,這個很容易理解,第二個擴展性好,建造類之間可以獨立,在一定程度上解耦,那在后續的coding,也能看到,在mybatis里面,符合應用建造者模式,在建造者模式中,那他主要的目的就是為了獨立和解耦
他的缺點是什么呢,會產生多余的Builder對象,產品內部如果發生變化的話,那我們的建造者也要修改,成本可能會根據業務場景變大或者變小,總之這一點也是建造者的缺點,那再強調一下,設計模式講究的是一個平衡,和業務模型的一個匹配
那建造者模式和工廠模式比較相近,他們之間的區別,首先建造者模式更注重于方法的調用順序,工廠模式更注重于創建產品,另外一個創建對象的力度不同,建造者可以創建一些復雜的產品,由各種復雜的部件組成,工廠模式創建出來的都是一個樣的,另外一個關注點,工廠模式注重是要把這個產品創建出來就OK了,而建造者模式,不只是要創建這個產品,我還需要知道這個產品是由哪些部件組成的,那建造者模式在某些場景,比如一定的順序絕對產品不一樣的話,那這里也要把順序進行調整,工廠則不關心順序
?
總結
- 上一篇: 抽象工厂源码解析
- 下一篇: 建造者模式 coding