Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在哪里使用闭包库实例化嵌套组件?_Javascript_Design Patterns_Dependency Injection_Instantiation_Google Closure Library - Fatal编程技术网

Javascript 在哪里使用闭包库实例化嵌套组件?

Javascript 在哪里使用闭包库实例化嵌套组件?,javascript,design-patterns,dependency-injection,instantiation,google-closure-library,Javascript,Design Patterns,Dependency Injection,Instantiation,Google Closure Library,闭包库提供了组件的基本生命周期: 实例化 渲染/装饰 文件输入 文件退出 处置 我关注的是前两个。关于设计模式,什么时候最好在第一步实例化嵌套组件 实例化:需要保留属性,直到通过addChild添加,并在必要时消耗内存。无论如何,由于它接收到的参数,它允许进行一些依赖注入或更好的初始化 渲染/装饰:打乱dom的创建,这可能已经很复杂,因为它需要其他对象的引用。它还需要以前存储在某些属性中的实例化参数。无论如何,保持实例化直到需要为止 可能在实例化后调用一个单独的方法来包装渲染?我这样问是因为Cl

闭包库提供了组件的基本生命周期:

实例化 渲染/装饰 文件输入 文件退出 处置 我关注的是前两个。关于设计模式,什么时候最好在第一步实例化嵌套组件

实例化:需要保留属性,直到通过addChild添加,并在必要时消耗内存。无论如何,由于它接收到的参数,它允许进行一些依赖注入或更好的初始化

渲染/装饰:打乱dom的创建,这可能已经很复杂,因为它需要其他对象的引用。它还需要以前存储在某些属性中的实例化参数。无论如何,保持实例化直到需要为止


可能在实例化后调用一个单独的方法来包装渲染?我这样问是因为Closure Library的书和文档没有提到这一点。

进行重构并尝试拆分逻辑,得出以下结论:

到目前为止,我发现最好的选择是在createDom方法内创建组件:

通常情况下,组件所需的参数涉及它们所提供的数据。我的体系结构使用DAO,这意味着所有数据对象都可以方便地连接。子组件通常需要父级DAO可以访问的其他数据对象。因为父对象需要这个DAO,所以可以将它存储在属性上,以便在createDom中使用

另一件事是,理论上,createDom组件中的实例化和渲染只需要两行代码,这并不混乱

同样,这是增强凝聚力的最佳解决方案