0

我在扩展 Swing Worker 的类中传递了许多参数(准确地说是 10 个),所以我想知道是否有某种方法可以创建一个帮助类,使我的代码更加优雅和可读?任务对象属于该类。代码工作正常,但我想知道如果我决定添加更多传递参数,是否可以使其更具可读性和更优化。

 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();

}        
4

2 回答 2

4

我真的无法为这个问题提供一个好的答案,因为我不太清楚你想要做什么。我强烈建议您查阅有关重构和设计模式的阅读材料,因为使用此类技术的经验将永远对您有所帮助。

至于具体示例:似乎大多数参数都是 UI 控件 - 您可以尝试创建一个包含用户界面对象的对象,然后您可以将其传递给构造函数来代替所有对象。编辑:您不一定需要为此制作自己的课程 -地图也是可能的。

或者,如果您创建SortThread了一个内部类,它就可以访问父级的字段,因此您不必将它们传递进去。

当然,其他有更多经验的人可能会对此事有更多的发言权,但鉴于这个问题是如此广泛,我想我还是会提出几个选择。

于 2012-12-05T22:32:50.663 回答
2

与其将这么多 GUI 组件传递给您的工作人员,不如让您的视图向工作人员注册为PropertyChangeListener. SwingWorker有一种firePropertyChange()方法可以很容易地使用观察者模式。

于 2012-12-06T13:10:41.820 回答