我有這個類,嘗試從Google地圖Web服務API獲取數據的多種方法。定期打破代碼的設計模式?
如果一個方法失敗,它會嘗試另一個方法。等
像這樣(僞代碼):
FUNCTION FIND_ADDRESS(house_number, postcode)
get location co-ordinates for postcode from local database
if location returns false, try getting location from maps service
if map service fails, return "postcode not found", exit
get address components using location co-ordinates
if address components doesn't contain street name, return street name not found, exit
if street name exists, get all address_components + location for house number, street_name and postcode
if no results, try again without the postcode,
if still no results, return location co-ordinates for postcode found earlier in code
END
正如你所看到的,這是非常程序!
我在想方法來改進代碼,我已經外部化了所有可重用的代碼,添加了異常處理,以確切地知道代碼在哪裏失敗。
但我想知道是否有人知道設計模式或類似的解決方案。
因爲基本上我想的東西,如果失敗嘗試別的東西,如果它失敗,其他依此類推,直到我得到一個完整的地址
任何想法想什麼?
Dude ...總有一種更好的方法可以做正確的事情:) :) – 2012-03-07 09:27:42
-1我對這個答案有幾個問題1)第一部分(ifs的數量)與問題無關 - 作者明確要求見解如何去關於實施具備回退功能的處理程序2)「沒有軟件模式」僅僅因爲你無法想象而是不真實的。相反,有 - 見戈登的答案。爲什麼不等到人們提出這樣的答案之前想出什麼? 3)「DP不是一個特定問題的解決方案......」當DPs解決了一類反覆出現的問題後,你終於將它們應用於一個特定的問題,不是嗎? – 2012-03-07 09:37:33