Design patterns ';拟为';初始化goog.ui.Control模型的方法?

Design patterns ';拟为';初始化goog.ui.Control模型的方法?,design-patterns,model,initialization,google-closure,Design Patterns,Model,Initialization,Google Closure,我发现谷歌闭包库不仅提供了功能,而且还提供了一种方法和指南来创建坚实的组件体系结构,这让我感到惊讶 goog.ui.Control继承自定义getModel和setModel的goog.ui.Component。这让我觉得它是为MVC设计的: 控制器是goog.ui.Control 视图是goog.ui.ControlRenderer 模型是goog.ui.Control.model\uz属性 我在整个图书馆里找不到一个使用这个模型的例子。我相信它是为谷歌自己使用的complexer模块保留的。

我发现谷歌闭包库不仅提供了功能,而且还提供了一种方法和指南来创建坚实的组件体系结构,这让我感到惊讶


goog.ui.Control
继承自定义
getModel
setModel
goog.ui.Component
。这让我觉得它是为MVC设计的:

  • 控制器是
    goog.ui.Control
  • 视图是
    goog.ui.ControlRenderer
  • 模型是
    goog.ui.Control.model\uz
    属性
  • 我在整个图书馆里找不到一个使用这个模型的例子。我相信它是为谷歌自己使用的complexer模块保留的。尽管如此,这个想法还是很有趣


    现在,问题是这样的:在哪里以及如何初始化
    goog.ui.Control
    :在构造函数内部?是否应将其作为参数提供给控件?是否应该在初始化时从外部进行设置?

    在提出问题时,我意识到了答案(或者至少我认为是一个好方法)。无论如何,我将把这篇文章留在这里,留给未来的我和任何其他感兴趣的人:

    复杂模型可能取决于附加的初始化参数。不管组件如何初始化,如果它想知道它的上下文,它必须从外部获得帮助

    在某种程度上,这与渲染初始化的要求非常相似。
    render
    decoration
    都需要一个额外的参数来工作,它们将在哪个元素下工作

    这里的模式与builder类似:拥有实例后,开始提供额外的初始化数据。使用该模型可以很容易地做到这一点。关于视图和模型之间的顺序,模型对于视图的初始化可能更重要,可能更重要。结果是:


    Builder设计模式,在渲染之前调用初始化数据

    goog.ui.Control
    继承自具有方法的
    goog.ui.Component
    。在图书馆中没有具体的用途-文档中的描述如下

    “与组件关联的任意数据对象。例如 “元数据”


    通常,您会在初始化之后但在渲染之前调用setModel,以便
    render
    /
    createDom
    方法可以访问
    model
    属性

    goog.ui.MenuItem使用setModel-