在运行线程中从公共类调用方法

时间:2015-08-06 15:55:19

标签: java java-threads

到目前为止,我根据模型 - 视图 - 控制器模式拆分了程序。 对于我的主题,我创建了一个新类:

public class MyThreadClass extends Thread 
{
    public MyThreadClass()
    {

    }

    public void run() 
    {
        //Call method from other class (public class Controller)
    }

}

在run()方法中,线程应该调用另一个类的方法(例如,为了我的目的,公共类控制器)。

我可以实例化类控制器但不会破坏保持MVC原则的目的吗?

我该怎么做?

1 个答案:

答案 0 :(得分:1)

好吧,既然你没有提供太多细节,请耐心等待一个可能与你的问题不完全匹配的答案。

此外,您构建和询问此问题的方式让我对您使用线程感到不安。我认为你应该重新考虑你是否需要线程来处理你正在做的事情。

但是,要回答...... 在尝试调用此Controller类方法时,我将为您提供两种广泛的模式。

  1. 创建时,为您的线程提供对Controller的引用。

    public class MyThreadClass extends Thread 
    {
        private Controller controller;
    
        public MyThreadClass(Controller controller)
        {
            this.controller = controller;
        }
    
    public void run() 
    {
        //Call method from other class (public class Controller)
        controller.someMethod();
    }
    
  2. 使控制器的方法成为公共和静态的(如果你不知道如何做到这一点,那么不要尝试使用这种方法 - 声明一些静态的东西比你想要的更复杂/假设你已经遇到了方法可访问性方面的问题。)然后像这样调用它:

    public void run()
    {
         Controller.someMethod();
    }
    
  3. 关于MVC的问题:

      

    我可以实例化类控制器但不会破坏保持MVC原则的目的吗?

    MVC要求View可以连接到Controller或以某种方式与它通信。实例化控制器通常不会影响您的设计模式是否为MVC。话虽这么说,如果你问的是每个MyThreadClass实例化自己的Controller版本......那将是糟糕的MVC。不要那样做。

相关问题