Total Pageviews

2011/06/20

VarArgs的應用

Varargs
varargs是JDK 1.5開始才提供的新功能,其定義如下:The varargs, or variable arguments, feature allows a developer to declare that a method can take a variable number of parameters for a given argument. The vararg must be the last argument in the formal argument list.
白話一點來說,varargs就是用來處理輸入參數數量無法預知的情形,以下是一個簡單的範例。

Scenario
為了因應客戶需求,將前端的刪除功能從單筆變成多筆,此時要從前端傳多筆資料的primary key給controller來進行資料刪除。

Class Diagram
由於多筆刪除是統一的作法,且每一個Controller都會繼承Abstract Controller,於是就把getPKList定義於AbstractController中,這樣每個controller都可以直接取用,如下圖:


Sequence Diagram
從Sequence diagram可以看出,當使用者選擇某幾筆資料,然後按下刪除按鈕,Controller會呼叫getPKList來取得從前端回傳回來的primary key,當接收到以後,再呼叫doDelete來刪除資料。


Sample Code
從以下的code snippet可以看出,getPKList有帶兩個參數,第二個參數就是varargs,由於每張table擁有的primary key的數量不一,有可能一個或一個以上,如NIGT036只有一個primary key, NIGT001則有四個
NIGT036

NIGT001



透過varargs,就可以一個method 滿足所有controller 的需求


/**
* Get primary key list
*
* @param delArray delete array
* @param keys primary keys
* @return List of String
*/
public List getPKList(final String delArray, final String...keys) {
List arr = JSONArray.fromObject(delArray);
List pkList = new ArrayList();
for (Map map : arr) {
//若有多個keys,就add多個primary key到pkLisk;若只有一個primary key,則只做一次
for(String str : keys){
pkList.add(map.get(str));
}
}
return pkList;
}


No comments: