關鍵字:架構設計


Figure 5. Encapsulating the business logic with a POJO façade
表示層調用POJO facade, POJO facade 調用業務對象。和EJB容器截獲EJB facade方式一樣,AOP通過“攔截機”來截獲POJO facade,并驗證調用者的權限,然后開始提交業務處理或讓該業務循環等待。
通過在應用程序服務器外部開發和調試業務邏輯,對POJO facade的開發可以變的很簡單,同時還可以獲得許多EJB中會話Bean的好處,比如聲明事務處理和安全。關鍵是,你可以少寫點代碼。你可以避免寫數據傳輸對象類,因為POJO facade可以將對象域直接反饋給表示層;你可以使用依賴注射的方式來將應用程序組裝起來,而不用在為JNDI寫查找代碼了。
然而,有些時候不能那用POJO facade,比如它不能參與到遠程客戶端建立的分布式事務處理。
暴露模型域模式
使用facade的一個缺點是你必須寫額外的代碼,而且負責將對象域返回給表示層的代碼很容易出錯。如果表示層設法調用某個對象,而業務層卻沒有提供該對象,也會增加runtime error出現的機會。如果你用JDO , Hibernate或者EJB3,則可以避免這種問題,方法是:將模型域(session區域)暴露給表示層,再將相應的對象域(存儲對象的區域)返回給表示層,根據表示層在對象域之間的操作關系,持久層來導入相應的對象。(也就是把session區域給表示層,然后分析它需要的對象,再讓持久層去加載這些對象)這就是所謂的lazy loading 技術。圖表6中顯示了表示層自由的訪問對象域的設計圖。

Figure 6. Using an exposed domain model
文章來源于領測軟件測試網 http://www.kjueaiud.com/