設計模式-Builder和Factory模式區別 Builder和Factory模式區別

Builder和Factory模式區別

Builder模式結構:html

 

Factory模式一進一出,Builder模式是分步流水線做業。
當你須要作一系列有序的工做或者按照必定的邏輯來完成建立一個對象時 Builder就派上用場啦。

咱們能夠看到,Builer模式與工廠模式是極爲類似的,可是他們仍是有區別的:編程

1、從結構上來看,Builder模式比工廠模式多了一個「導演類」的角色。
在Builder模式的類圖中,假如把這個導演類看作是最終調用的客戶端,那麼圖中剩餘的部分就能夠看做是一個簡單的工廠模式了。設計模式

 

2、二者所建立的產品類型徹底不同。
Factory建立只能是單一的產品(單一在這指它非複合產品),而Builder所建立的產品是複合產品,即產品自己就是由其它部件產品組成的。

舉個例子來講,如今要生產一輛車,假設它就只由這三個部分組成:玻璃、輪子、發動機。
對於工廠模式來講,他建立後返回的,只能是玻璃,或者輪子,抑或是發動機。
無論怎麼樣,他不能向客戶返回一輛完整的汽車,要獲得一輛完整的汽車,客戶必須本身動手去把這些零部件組裝成一輛汽車。
從這個意義上來說,工廠模式中的工廠,只是充當了零件廠的角色。
那Builder又是如何建立產品的呢?在Builder模式中,通常不須要、也不充許向客戶返回單個部件,他向客戶返回的,僅僅就是一部已經徹底組裝好的汽車成品。
對於汽車部件的生產細節,客戶不須要、也不該該讓他們知道。post

寫到這,我忽然想到了組裝電腦與品牌電腦的差異,組裝電腦雖然價格便宜,且易於改動,但性能沒有保證,另外你本身還必須瞭解不少有關電腦方面的知識;對於品牌電腦,價格貴這點先暫時不說,關鍵在於他不靈活,可是它的性能能夠獲得很好保證(由廠家),這易像咱們在Builder的系統端保證部件的質量同樣。另外,對於品牌電腦,客戶根本不須要了解多少電腦組裝方面的知識,就能夠把一臺電腦抱回家,開機使用了。
那麼,在實際運用中,你是喜歡作DIY一族呢,仍是喜歡穩定有保證的質量呢?好像在咱們編程的這個過程當中,咱們比較趨向於使用「品牌電腦」。這也就爲咱們正確使用這兩種設計模式提供了一個方向:若是你要生產的產品是由不一樣部件組成的,你最好使用Builder模式,而非Factory模式。性能

3、Builder和Factory的差異,還在於他們所生產部件產品所在產品樹的問題。
這樣說,可能有點拗口。具體來講吧,在工廠模式中,咱們知道,一個工廠能夠建立多個產品,但一個工廠模式中所建立的某個產品,都會和另外一個工廠中所建立的產品在同一棵繼承樹上。
Builder能夠建立出能夠建立出風馬不相及的產品(雖然咱們不這麼作),可是Factory模式通常是建立一類產品。ui

 

轉:https://www.cnblogs.com/yejg1212/archive/2013/02/25/2932526.htmlurl

相關文章
相關標籤/搜索