2012-12-05 24 views
0

我將很多參數(準確地說是10)傳遞給我的類,它擴展了Swing Worker,所以我想知道是否有某種方法可以創建幫助類,這會讓我的代碼更優雅和可讀?任務對象是該類的。代碼工作正常,但我想知道如果我決定添加更多的傳遞參數,是否可以使它更具可讀性和更優化。java - Swing Worker - 傳遞許多參數

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    SortThread task = new SortThread(a, brelem, sort, jButton1, brElemTextField, 
      bubbleButton, selectionButton, insertionButton, jLabel3, 
      konzola, startTime, stopTime, sekunde, jScrollPane2); 
    task.addPropertyChangeListener(new PropertyChangeListener() { 
     @Override 
     public void propertyChange(PropertyChangeEvent e) { 
      if ("progress".equals(e.getPropertyName())) { 
       jProgressBar1.setValue((Integer) e.getNewValue()); 
      } 
     } 
    }); 
    task.execute(); 

}   
+0

是的,這聽起來像你應該爲此創建一個類。你有什麼嘗試,它怎麼不工作?編輯:我第二個@Jeff剛纔說的。你的問題太廣泛了,也與Swing或SwingWorkers無關,只是一般的java。 –

+0

因此,對於一些普遍的答案,然後:嘗試查找設計模式。我不完全是他們的主人,但我的頭頂上[builder pattern](http://en.wikipedia.org/wiki/Builder_pattern)聽起來很有用。 – Jeff

+0

你是否試圖讓它更容易調用重用性或只是試圖「漂亮」的代碼? – MadProgrammer

回答

4

我無法真正爲這個問題提供一個很好的答案,因爲我不知道你在做什麼。我強烈建議查閱重構和設計模式的閱讀材料,因爲這種技術的經驗將永遠幫助你。

至於具體的例子:看起來大部分的參數都是UI控件 - 你可以試着製作一個包含你的用戶界面對象的對象,然後你可以將它傳遞給構造函數來代替所有的對象。 編輯:你不一定需要爲此創建一個類 - map也是一種可能性。

另外,如果你讓SortThreadinner class,它就可以有機會獲得母公司的領域,所以你不必通過他們進來。

當然,其他人有更多的經驗將有可能在這個問題上要說更多的話,但鑑於這個問題如此廣泛,我認爲我會拋出一些選擇。

2

而不是將這麼多GUI組件傳遞給您的工作人員,請將您的視圖註冊爲PropertyChangeListenerSwingWorker有一個firePropertyChange()方法,使得使用observer pattern非常容易。