Oop 在主干网木偶节点中实例化控制器的位置?

Oop 在主干网木偶节点中实例化控制器的位置?,oop,controller,marionette,Oop,Controller,Marionette,在我的应用程序中,每个模块都有控制器,充当中介。 什么地方更适合实例化它们: 在主控制器中,如下所示: App.MainController = Marionette.Controller.extend({ doSomething: function(){ var controller = new App.Module1.Controller(); controller.doSomething(); ... }, doSo

在我的应用程序中,每个模块都有控制器,充当中介。 什么地方更适合实例化它们:

  • 在主控制器中,如下所示:

    App.MainController = Marionette.Controller.extend({ 
        doSomething: function(){
            var controller = new App.Module1.Controller();
            controller.doSomething();
            ...
        },
        doSomethingElse: function(){
            var controller = new App.Module1.Controller();
            controller.doSomethingElse();
            ...       
        }
    });
    
    Module1.addInitializer(function(){      
        Module1.controller = new Controller({
            ...
        });
    }); 
    
  • 或者在如下模块的初始化方法中:

    App.MainController = Marionette.Controller.extend({ 
        doSomething: function(){
            var controller = new App.Module1.Controller();
            controller.doSomething();
            ...
        },
        doSomethingElse: function(){
            var controller = new App.Module1.Controller();
            controller.doSomethingElse();
            ...       
        }
    });
    
    Module1.addInitializer(function(){      
        Module1.controller = new Controller({
            ...
        });
    }); 
    
  • 并从主控制器调用它:

        doSomething: function(){ 
          App.Module1.controller.doSomething();
        },
        doSomethingElse: function(){ 
          App.Module1.controller.doSomethingElse();
        },
    
    是拥有一个全局控制器实例更好,还是每次需要时都创建它们更好? 我很困惑。
    非常感谢您的建议。

    我想您的问题不仅仅针对控制器。 我的偏好是,如果需要在不同的模块之间共享数据,并且需要在操作之间持久化数据,则只应使用全局实例

    如果没有这样的需求,你就不应该浪费资源来满足它们。此外,您拥有的全局实例越少,就越容易在应用程序中维护资源


    希望对你有所帮助

    谢谢陈明解释一般问题。这真的很有帮助,但我的目的是在木偶对象用作控制器的特殊问题上找到最佳解决方案。我知道这是一样的——这取决于应用程序的体系结构。如果我不需要保持模块的状态,我应该每次从头开始实例化它的控制器。全局(应用程序中)对象只能用于共享数据。