2012-08-24 21 views
1

我有一些麻煩弄清楚這一點,所以如果你可以幫助,這將是偉大的。Java - 試圖規劃一個程序類的佈局

我已經寫了一些代碼,從站點地圖獲取URL列表。然後我去每一頁,刮掉所有的鏈接,然後測試它們的狀態(200,404等)。

我正在使用HttpClient。我有這一切工作正常,但由於我是Java新手,我認爲我的代碼是一個完整的黑客/迷宮,如果組織正確,我可能會獲得更好的性能。所以,我有什麼是

主要類 - 這建立在GUI

解析網站地圖類 - 這解析網站地圖,並獲得一個網址列表。

班級稱爲PingURl - 我敢肯定我的上述是窮人,但這是我認爲是最糟糕的。這個類打開所有的URL,將它們剪切爲鏈接,然後測試鏈接的狀態並返回。我猜這個班應該分解?最重要的是,我認爲我應該隔離它自己的類中的鏈接的測試,所以稍後可以很容易地實現線程?

基本上我在尋找建議。如果有人能夠幫助我將項目佈置得更好一些。其次,我認爲這是我最薄弱的領域,所以爲了提高我需要了解更多信息,我甚至不知道該怎麼稱呼(設計/佈局問題?)。你也可以推薦資源來了解更多關於這方面的信息嗎

+1

可能我建議你將你擔心的代碼發佈到http:// codereview。 stackexchange.com/?對於你所問的那種問題,這將是一個更好的匹配。代碼組織本身不一定會影響性能,只是程序本身的結構。 – Dervall

回答

1

Java是IMO的一種語言,體現了良好的面向對象設計。在設計OO時非常有效。

http://java.sun.com/developer/onlineTraining/Programming/BasicJava2/oo.html

在你的問題而言,我覺得它工作得很好。你是一種模型 - 視圖 - 控制器模式:http://www.codinghorror.com/blog/2008/05/understanding-model-view-controller.html

我不能告訴你如何設計你的代碼,但我會告訴你如何我會這樣做,如果我提出了相同的問題:

我會得到一個類來表示超鏈接。在那個類中將會有被刮掉的超鏈接,以及一個getter和setter。以及布爾值和ping功能。這意味着如果我創建一個「超鏈接」對象,那麼我可以在該對象上調用(「ping」),因爲它是該類的一部分。這意味着ping功能只需設置表示連接的布爾值。

這樣,你的解析器基本上會得到一個頁面,並且它找到的每個鏈接都會根據你自己的「超鏈接」類創建一個新的「超鏈接」對象。並把它放在一個數組中。所以一旦你的解析器執行你得到一個指向超鏈接的指針數組。

然後你所要做的就是調用每一個上的ping功能來查看它是否在那裏。

我認爲這個設計是最好的,因爲它可以從一個超鏈接測試擴展到很容易做1000個測試。

這裏有很多關於設計的東西,還有無數的校長。從來沒有絕對的辦法可以解決問題。但你獲得的經驗越多,閱讀越多的設計模式和模型就越能獲得它:)