實戰多系統通用功能抽取的設計思路

2021-08-22 17:22:45 字數 1375 閱讀 6478

1.產品按指定的順序顯示。

業務邏輯大致如下,當前產品推出了多個**。**id是從別人的介面中獲取的,返回的是無順序的。但是不排序的話,jsp頁面上顯示會很亂,這樣有了對**排序的需求。

原來是在程式中定義了乙個陣列,以陣列中**id的順序來排序,初步實現了**排序的功能。由於新**的推出較頻繁,這樣每次增加新**,陣列就得做相應地改動,也就是每次都需要修改程式,生產系統的server也要重新啟動,感覺需要改進。

如果有新**推出,不用修改程式,不用重啟server,就比較理想了。於是有了如下想法:

做乙個配置檔案,將**資訊包含其中,程式中解析此xml檔案,根據檔案中**的順序進行排序。每次新增新**時,只要修改此xml檔案,然後上傳到生產系統就可以了(具體的實現很簡單,不寫了)。

2.產品按指定規則變更。

使用者選擇了某個**a,使用了一段時間後,發現還是**b更實惠,這樣會對當前使用的**進行變更。業務規則如下:對**變更來講,例如:5+**可以變更為15+,25,35+,45+;一段時間後,5+**不能變更為45+**了,而且**變更的規則變化較快。

使用者登陸應用後,可以在頁面上進行**變更操作。可變更的**在乙個下拉框中顯示,可變更**的獲取並不難,目前用乙個方法進行過濾。關鍵是:以後每次**變更規則時,程式都要修改,很麻煩。

解決辦法與**排序幾乎一樣。

3.多應用中的通用功能的抽取。

我們的多個應用部署在同乙個jboss server下。例如:應用a和應用b部署在同一jboss server下(目前只能這樣),每個應用中都有乙個配置檔案a.xml(就是解決上面1,2產生的配置檔案),格式相同內容不同。

a.xml中有**的資訊,對於不同的系統來說,**的資訊是不同的,例如a應用中需要配置10+,20+,30+,40+,50+**,應用b中需要配置5+,15+,25+,35+,45+**。

我們目前有多個應用,每個應用都有**的變更和排序的功能需求,大家的實現都差不多。於是就有了把以上兩個功能抽出來,做乙個jar包,假定為suite.jar每個應用中包含乙份。

實現:多個應用部署在同乙個jboss server下,每個應用中包含乙個suite.jar,server啟動時,各應用通過各自suite.jar中的listener中獲取當前應用的a.xml的路徑,然後載入它。為了維護的方便,各應用中的a.xml都是相同的,每個應用只取自己需要的部分。

1)將這幾個通用的功能抽取出來,做成乙個jar,分別放在各子系統中。

優點:通用的功能**在一處維護,功能公升級時,修改乙份源程式即可。

缺點:在多個應用中散布著相同的jar,其實也是在多個地方維護著同乙份**。

2)將這幾個通用的功能做成乙個jar,放到jboss的lib下。

優點:多個應用使用同乙份**,通用的功能**在一處維護。

不合理或者完善的地方還請大家批評指正,謝謝!

通用功能點

1.介面 1 列表的更新 新增 刪除 排序等操作 各種操作後的選擇行 2 windows選單操作 3 功能介面常用的功能點 增 刪 改 列表查詢 詳細查詢 重新整理 4 介面顯示的元素通過資料庫獲得,如按鈕名稱 2.功能 1 系統的使用 1 使用者 2 許可權 3 登陸 4 系統設定 a.基礎資料維...

CUDA功能和通用功能

cuda功能和通用功能 本文描述了類似於cuda ufunc的物件。為了支援cuda程式的程式設計模式,cuda vectorize和guvectorize無法產生常規的ufunc。而是返回類似ufunc的物件。該物件是乙個近似的物件,但與常規的numpy ufunc不完全相容。cuda ufunc...

PG通用 常用 功能

檢視各個表所占用記憶體 select table schema table name as table full name,pg size pretty pg total relation size table schema table name as size from information s...