淺淡ViewObject 的設計

2021-08-31 12:07:19 字數 1532 閱讀 2394

如何降低頁面的複雜性,如何降低頁面的**量,如何減少 jsp

頁面煩人的 標籤。方法之一就是用好 viewobject 。

在我所在接觸過的系統中,我曾經看到過全能的 viewobject 。資料持久化需要他,業務邏輯需要他、頁面展示需要他。以至於造成以下情況:

1 、檢視層**複雜,既有持久化層的邏輯,又有業務邏輯層的邏輯、還有展示層的邏輯。

2 、 事務從服務層蔓延到檢視層。對於 viewobject 的修改,會直接影響到資料庫。

3 、**的維護量特別大,不敢進行重構。一旦有需求,只敢增加**,卻不敢對原有**進行改善。

4 、**無法重用。如果乙個 widget 在不同的頁面上出現多次,檢視層的**也要對應複製多次。

這些嚴重制約的系統的發展。所以需要精心設計 viewobject 供網頁使用。

如何設計乙個好的 viewobject 。

1 、引入工廠,

viewobject 通過收集 ui 上的各種表單元素, viewobject 了解顧客使用了哪些支付方式,支付多少金額等等情況,所以所可以生成各種業務邏輯物件。這好比工廠擁有各種原材料,通過一定的工藝、程式,就可以產出各種東西。 viewobject 也是如此。

比如 ui 有網銀支付,積分支付,代金券三種支付方式,顧客可以進行組合支付。系統將會跟會根據支付結果,生成相應支付記錄。那麼我們怎麼寫支付 viewobject 呢?

**如下 :

public class paymentviewobject 

/*** 至少有乙個支付

*/public isvalidpayment()

public boolean hasenoughpoints(int pointshad)

if(onlinebank)

if(voucher)

return records;

}}

這樣,檢視層的**複雜對大大降低,可維護性提高。

2 、分析頁面上相似的 widget ,分析差異,再設 計出 viewobject 。

電子商務後台中,最常看到的元素的是訂單項。但是在訂單預定流程、訂單修改流程、訂單確認流程,訂單項表現形式有點差異:比如

訂單預定流程(單項,**,配額)

訂購修改流程(單項,總價,實際占用配額)

訂單確認流程(單項,確認時間,確認人)

經過分析,我們就抽取出 orderitemviewobject ,並建立乙個 orderitemviewobjectfactory, 生成各種 vo

綜上所述,可以採用如下方法指導 viewobject 的編寫。 1 、引入 factory ,常見建立各種 vo 。 2 、在 vo 新增 factorymethod 建立 domainobject 。 3 、把部分邏輯寫入 vo ,減少檢視層的**複雜度。

淺淡IT系統的內部推廣

隨it技術發展企業內部管理中越來越多的過程被資訊系統所取代,這大大提高了企業的執行效率,也提高了企業管理的科學性和準確性。可是如何把乙個企業資訊系統很好的在企業內部推廣,對於企業資訊管理人員來說是乙個非常重要的課題。選擇自己最適合的系統 首先要選擇選擇乙個適合自己企業的資訊系統,資訊系統選型不比買衣...

關於大小端模式的淺淡

以實際情況作例子 1.由圖是不是可知位址 unsignd char 0x0000 0020的所存值?答 0x3c。2.對於32位機,由圖是否可知位址 unsignd int 0x0000 0020的所存值?答 不確定,當為小端模式,值為 0x3c 當為大端模式,值為 0x3c000000。3.關於大...

淺淡PHP生成HTML的思路

目前網路上好多 的新聞發布系統都採用了動態伺服器 技術生成靜態 htmlphp這 一動態技術來構建新聞發布系統,其原理也就是應用了php生成html靜態頁面的技術,相關平台是 windows xp sp2 php4.32 mysql,因此,在這裡,想簡單地談一下這種做法的思路。這篇文章適合於對php...