Java程式效能最佳化 讀書筆記(七)設計模式:ValueObject模式__Java

來源:互聯網
上載者:User
一、Value Object模式

在J2EE軟體開發中,通常會對系統模組進行分層。展示層主要負責資料的展示,定義資料庫的UI組織模式;商務邏輯層負責具體的商務邏輯處理;持久層通常指資料庫以及相關操作。在一個大型系統中,這些層次很有可能被分離,並部署在不同的伺服器上。而在兩個層次之間,可能通過遠端程序呼叫RMI等方式進行通訊。

如下圖所示,展示層組件作為RMI的用戶端,通過中間的商務邏輯層取得一個訂單(Order)的資訊。假設一個訂單由客戶名、商品名和數量構成,那麼一次互動過程可能由圖所描述的這樣,RMI的用戶端會與服務端進行3次互動,依次取得這些資訊。


  基於以上模式的通訊方式是一種可行的解決方案,但是它存在兩個嚴重的問題:

  (1)對於擷取一個訂單對象而言,這個操作模式略顯繁瑣,且不具備較好的可維護性

  (2)前後累計進行了3次用戶端與伺服器的通訊,效能成本較高

  為瞭解決這兩個問題,就可以使用Value Object模式。Value Object模式提倡將一個對象的各個屬性進行封裝,將封裝後的對象在網路中傳遞,從而使系統擁有更好的互動模型,並且減少網路通訊資料,從而提高系統效能。使用Value Object模式對以上結構進行改良,定義對象Order,由Order對象維護客戶名、商品名和數量等資訊,而Order對象也就是Value Object,它必須是一個可序列化的對象。將Value Object模式應用到本例中,便可以得到如圖2.16所示的結構。

  圖2.16  Value Object模式架構圖

在基於Value Object模式的結構中,為了獲得一份訂單資訊,只需要進行一次網路通訊,縮短了資料存取的回應時間,減少了網路資料流量。注意:使用Value Object模式可以有效減少網路互動次數,提高遠程調用方法的效能,也能使系統介面具有更好的可維護性。 二、JavaBean

JavaBean是一個遵循特定寫法的Java類,它通常具有如下特點:

這個Java類必須具有一個無參的建構函式 屬性必須私人化。 私人化的屬性必須通過public類型的方法暴露給其它程式,並且方法的命名也必須遵守一定的命名規範。

JavaBean的屬性可以是任意類型,並且一個JavaBean可以有多個屬性。每個屬性通常都需要具有相應的setter、 getter方法,setter方法稱為屬性修改器,getter方法稱為屬性訪問器。屬性修改器必須以小寫set首碼開始,後跟屬性名稱,且屬性名稱的第一個字母要改為大寫,例如,name屬性的修改器名稱為setName,password屬性的修改器名稱為setPassword。 屬性訪問器通常以小寫get首碼開始,後跟屬性名稱,且屬性名稱的第一個字母也要改為大寫,例如,name屬性的訪問器名稱為getName,password屬性的訪問器名稱為getPassword。 一個JavaBean的某個屬性也可以只有set方法或get方法,這樣的屬性通常也稱之為唯寫、唯讀屬性。

在使用中一般將ValueObject定義成JavaBean的樣式以規範使用。











聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.