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
属性现在,问题是这样的:在哪里以及如何初始化
goog.ui.Control
:在构造函数内部?是否应将其作为参数提供给控件?是否应该在初始化时从外部进行设置?在提出问题时,我意识到了答案(或者至少我认为是一个好方法)。无论如何,我将把这篇文章留在这里,留给未来的我和任何其他感兴趣的人:
复杂模型可能取决于附加的初始化参数。不管组件如何初始化,如果它想知道它的上下文,它必须从外部获得帮助
在某种程度上,这与渲染初始化的要求非常相似。render
和decoration
都需要一个额外的参数来工作,它们将在哪个元素下工作
这里的模式与builder类似:拥有实例后,开始提供额外的初始化数据。使用该模型可以很容易地做到这一点。关于视图和模型之间的顺序,模型对于视图的初始化可能更重要,可能更重要。结果是:
Builder设计模式,在渲染之前调用初始化数据
goog.ui.Control
继承自具有方法的goog.ui.Component
。在图书馆中没有具体的用途-文档中的描述如下
“与组件关联的任意数据对象。例如
“元数据”
通常,您会在初始化之后但在渲染之前调用setModel,以便
render
/createDom
方法可以访问model
属性 goog.ui.MenuItem使用setModel-