-1

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

public class MyThreadClass extends Thread 
{
    public MyThreadClass()
    {

    }

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

}

在 run() 方法中,线程应该调用另一个类的方法(例如,我的目的是公共类 Controller)。

我可以实例化类控制器,但这不会破坏遵守 MVC 原则的目的吗?

我该怎么做?

4

1 回答 1

1

好吧,由于您没有提供太多细节,请耐心等待可能与您的问题不完全匹配的答案。

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

但是,为了回答……我会给你两个广泛的模式来尝试调用这个 Controller 类方法。

  1. 当你创建它时,给你的线程一个对你的控制器的引用。

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

对于您关于 MVC 的问题:

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

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

于 2015-08-06T16:41:39.490 回答