【问题标题】:In MVC, one or multiple Model/Controller classes?在 MVC 中,一个或多个模型/控制器类?
【发布时间】:2016-11-02 20:34:48
【问题描述】:

在使用 MVC 的多窗口应用程序的上下文中:

  • 在模型层中,为了实现观察者模式,我是否应该使用一个主题类并让所有其他模型类都使用它来通知观察者?还是应该创建多个主题?
  • 以同样的方式,我应该让一个控制器来处理视图上的所有可能操作,还是应该有多个控制器? (在多个控制器的情况下,例如,当应用程序打开一个新窗口时,应该实例化一个控制器吗?)

【问题讨论】:

    标签: model-view-controller observer-pattern


    【解决方案1】:

    “Head first design patterns”有一个关于观察者模式的优秀章节。

    我应该使用一个 Subject 类并让所有其他 Model 类都使用它来通知观察者吗?

    取决于观察者是否都需要相同的数据。如果观察者需要不同的数据,请使用多个主题类

    我应该有一个控制器来处理视图上的所有可能操作,还是应该有多个控制器

    这可能不是您期望的答案,但也许不是为每个控制器创建一个实例,而是在视图的构造函数中传递一个接口。该接口应由控制器实现。 例如:

    class controller implements foos
    {
    public static void run();
    }
    
    
    interface foos{
         public static void run();
    }
    
    
    public class view
    {
        foos controllerInstance;
        //constructor
        view(foos paramController)
        {
        this.controllerInstance = paramController;
        }
        //later in the code
        controllerInstance.run();
    }
    

    如果您希望 run 方法可以使用参数传递数据。 希望这会有所帮助:)

    (关于 SO 的第一个答案)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多