Java設計模式之建立者模式,分享熱愛編程的程式人生

來源:互聯網
上載者:User

標籤:java   設計模式   建立者   

PS:今天的23中設計模式中的建立者方式,至此告一段落。我今天帶來的技術分享為建立者模式以及原型模式。當然在Java中這兩種方式很常見,只不過我們寫的次數確實有點低而已,但是這不是我不學它的借口!!!

建立者模式

無構建者模式程式碼範例:需求建立一個>機車對象 並且使其開始運行。

發動機代碼構建:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b000004a9b8da9662c3" />

發動機代碼構鍵

車架代碼執行個體:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b02000333d6ae3bad90" />

車架代碼執行個體

 

輪胎機程式碼範例:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b060000234613f2ec87" />

輪胎機代碼示

>機車對象實體類:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b0100033ce65ca32659" />

>機車對象實體類

測試類別:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b0100033f5c2904488d" />

測試類別

總結:>機車對象時一個大對象:構建過程中可能需要很多其他對象的使用,比如:車架、發動機、輪胎 所以如果每次>機車對象的建立,都需要其他對象 並且調用者都需要知道>機車的具體細節,這樣對於調 用者來說是很痛苦的。所以在這個基礎之上,我們希望 是否可以將調用者和建立者進行解耦。

作用:

當一個類的內部資料過於複雜的時候(通常是負責持有資料的類,比如Config、VO、PO、Entity...),要建立的話可能就需要瞭解這個類的內部結構,還有這些東西是怎麼組織裝配等一大坨亂七八糟的東西,這個時候就會增加學習成本而且會很混亂,這個時候就想啊想一種什麼法子來管理一下這個類中的資料呢,怎麼在建立的時候讓它按部就班的來,並且代碼可讀性很好別讓我看花了眼啊,我要的東西也能都很好設定進來,這就是Builder模式的應用情境,Builder模式可以將一個類的構建和表示進行分離。

常見的使用情境:構建比較複雜的產品。

StringBuilder DomBuilder SaxBuilder

Sql中的PreparedStatement

構建者類圖總結

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p1.pstatp.com/large/3b0400003384eb30f62c" />

類圖總結

總結:以上,調用者無需知道具體的構建者中的具體構建順序,調用者專註於自己的業務即可。實現瞭解耦。但是這裡最重要的就是構建順序,不同的builder’可以構建不同的執行個體對象

案例測試:需求構建一個對應品牌的手機對象。調用者無需知道具體的對象的調用細則。

手機實體類構建代碼:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b0600002a087f401451" />

實體手機類

構建者介面以及對應實現 :

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b0400005917e6f2c91c" />

構建者介面以及對應實現

裝配介面以及對應實現:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p1.pstatp.com/large/3b0700003392567a8cc4" />

裝配介面以及對應實現

測試類別:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p3.pstatp.com/large/3b0700003bd159e2a6d2" />

測試類別

總結:以及需工廠的區別

a、將一個對象底層的依賴 全部交由builder執行,具體的建造順序,由builder指定。然後由director負責完成裝配過程。調用者無需知道底層的具體順序以及裝配過程。如果不滿足需要則直接重新建立builder,完成具體的建造順序

b、建造者模式關注與對象建立的具體過程,而工廠則關注於最後建立對象的結果。


c、如果構建出來的對象差異較大,需要多個構建者才能完成。所以會藉助到單例或者工廠一起使用。

拓展:

需求,構建類似於一個對象,但是對象構建時,屬性很多。有可能忘記屬性,或者屬性沒寫全。那麼當前這個對象就無法建立,通過建立者模式解決問題。

實現代碼:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p9.pstatp.com/large/3b0500008c0e48df75f2" />

實現代碼

測試類別:

650) this.width=650;" style="margin:10px auto;" alt="Java設計模式之建立者模式分享熱愛編程,程式人生" src="http://p1.pstatp.com/large/3b050001d4cfded48f7d" />

測試類別

PS:大家有什麼想要分享的內容!可以在評論下方留言!!!




上海尚學堂-IT蛇精病原創。
上海尚學堂java培訓,項目實戰化教學,成就java培訓高端品牌!


本文出自 “13144428” 部落格,請務必保留此出處http://13154428.blog.51cto.com/13144428/1966899

Java設計模式之建立者模式,分享熱愛編程的程式人生

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.