到目前为止,我根据模型 - 视图 - 控制器模式拆分了程序。 对于我的主题,我创建了一个新类:
public class MyThreadClass extends Thread
{
public MyThreadClass()
{
}
public void run()
{
//Call method from other class (public class Controller)
}
}
在run()方法中,线程应该调用另一个类的方法(例如,为了我的目的,公共类控制器)。
我可以实例化类控制器但不会破坏保持MVC原则的目的吗?
我该怎么做?
答案 0 :(得分:1)
好吧,既然你没有提供太多细节,请耐心等待一个可能与你的问题不完全匹配的答案。
此外,您构建和询问此问题的方式让我对您使用线程感到不安。我认为你应该重新考虑你是否需要线程来处理你正在做的事情。
但是,要回答...... 在尝试调用此Controller类方法时,我将为您提供两种广泛的模式。
创建时,为您的线程提供对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();
}
使控制器的方法成为公共和静态的(如果你不知道如何做到这一点,那么不要尝试使用这种方法 - 声明一些静态的东西比你想要的更复杂/假设你已经遇到了方法可访问性方面的问题。)然后像这样调用它:
public void run()
{
Controller.someMethod();
}
关于MVC的问题:
我可以实例化类控制器但不会破坏保持MVC原则的目的吗?
MVC要求View可以连接到Controller或以某种方式与它通信。实例化控制器通常不会影响您的设计模式是否为MVC。话虽这么说,如果你问的是每个MyThreadClass实例化自己的Controller版本......那将是糟糕的MVC。不要那样做。