簡單的說,就是一個程式中的某個參數可以有多個取值,各個值之間有優先級。運作 時,先使用優先級高的參數值;如果該參數值失效,再自動調用優先級低的參數值。
在我的項目裡,有一個調用遠端服務的方法,遠端服務在多個伺服器上都部署、運作起來了。是以,遠端服務的位址有好幾個。運作時,先使用伺服器速度快 的那個位址;如果連接配接不上,再使用後備位址。
主要的代碼如下:
/** 傳回可用的URL
* @return
*/
final private String findAvailableURL(){
System.out.println("findAvailableURL===="+url1+url2+url3);
if(isAvailable(url1)){
return url1;
}else if(isAvailable(url2)){
return url2;
}else if(isAvailable(url3)){
return url3;
}else{
return null;
}
}
/* 查找可用的位址
private synchronized boolean isAvailable(String anUrl){
if(Utils.nullOrBlank(anUrl)){
return false;
int count = 0;
while(count<5){
try{
this.url = new URL(anUrl);
connection = (HttpURLConnection)url.openConnection();
int state = connection.getResponseCode();
if(state==200){
return true;
}
System.out.println("isAvailable==state="+state);
}catch(Exception ex){
count ++;
continue;
}
}
同樣的邏輯可以用在其它參數上。對每個參數做一個簡單的判斷(本例中是判斷能否打開遠端服務的連結),判斷通過,則使用該參數,否則的話,進入第二 個參數的判斷。
本文轉自 斯然在天邊 51CTO部落格,原文連結:http://blog.51cto.com/winters1224/799034,如需轉載請自行聯系原作者