根据另一个类中的选项修改类的操作?

时间:2014-11-29 18:00:59

标签: java

这是关于风格的问题。这种情况最简洁的解决方案是什么:

我有一个Runnable类:

class R implements Runnable {
  public void run(){
    System.out.print("hello")
  }
}

另一个以这样开始这个类的类:

Thread t = new Thread(new R());
t.start;

我的问题是,如果我需要运行以执行更多不同的操作,具体取决于启动线程的类中选择的单选按钮,那么将它传递给Runnable类的最佳方法是什么?

我应该创建一个构造函数并添加一个布尔巫婆动作来执行吗?或者在运行线程之前创建一个公共布尔值并将其设置为true false?或者我应该用不同的动作在R类中定义一个Enum并传递给它?或者其他一些方式?

1 个答案:

答案 0 :(得分:1)

我同意最好的方法是让Runnable的构造函数接受执行所需的任何参数。例如:

class R implements Runnable {

  private final boolean myBool;

  public R(boolean myBool) {
    this.myBool = myBool;
  }

  public void run(){
    if (myBool) {
      System.out.print("hello");
    } else {
      System.out.print("goodbye");
    }
  }
}

一般而言,制作公共全局变量(您提及的另一种选择)是不好的做法。上面列出的方法可以确保封装;只有需要了解价值的东西才能知道。这可以确保随着系统变得越来越复杂,没有其他类会弄乱您的值: - )