熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java程序性能優化-Value Object模式(1)[1]

2013-11-23 20:00:58  來源: Java高級技術 

    Value Object模式(

  在JEE軟件開發中通常會對系統模塊進行分層展示層主要負責數據的展示定義數據庫的UI組織模式業務邏輯層負責具體的業務邏輯處理持久層通常指數據庫以及相關操作在一個大型系統中這些層次很有可能被分離並部署在不同的服務器上而在兩個層次之間可能通過遠程過程調用RMI等方式進行通信如圖所示展示層組件作為RMI的客戶端通過中間的業務邏輯層取得一個訂單(Order)的信息假設一個訂單由客戶名商品名和數量構成那麼一次交互過程可能由圖所描述的這樣RMI的客戶端會與服務端進行次交互依次取得這些信息

  圖  展示層與業務邏輯層交互示例

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

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

  ()前後累計進行了次客戶端與服務器的通信性能成本較高

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

  圖  Value Object模式架構圖

  在基於Value Object模式的結構中為了獲得一份訂單信息只需要進行一次網絡通信縮短了數據存取的響應時間減少了網絡數據流量

  注意使用Value Object模式可以有效減少網絡交互次數提高遠程調用方法的性能也能使系統接口具有更好的可維護性

  RMI服務端的接口實現如下其中getOrder()方法取得一個Value Object其他方法均取得Order對象的一部分信息

  public interface IOrderManager  extends Remote {

  public Order getOrder(int id) throws RemoteException;

  //Value Object模式

  public String getClientName(int id) throws RemoteException;

  public String getProdName(int id) throws RemoteException;

  public int getNumber(int id) throws RemoteException;

  }

  一個最簡單的IOrderManager的實現它什麼也沒做只是返回數據

[]  []  


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27814.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.