我正在寻找Node.js中的干净设计模式,以允许我在分别引用另一个模块时将两个类放在单独的模块中。相互依赖对象的模块模式
例如:我有Node
和NodeCollection
的对象。很明显NodeCollection
必须知道什么是Node
,但Nodes
本身为他们的子女保留一个NodeCollection
对象。
当我需要时,我正在配置Node构造函数。
nodeCollection.js
const Node=require('./node')(NodeCollection)
function NodeCollection(....){
// do stuff with Node objects
}
module.exports = NodeCollection'
Node.js的
function Node(NodeCollection){
function _Node(...){
this.children = new NodeCollection();
//do stuff
}
return _Node;
}
module.exports = Node;
是否有更好的方法来设计呢?
附录:似乎有一些误解:我没有要求更好的NodeCollection或Node对象的设计。这些是作为玩具的例子。通常,在这样的例子中,这两类不可能彼此不可知。我正在寻找一种方法来设置Node.js模块,当面对这样的安排。我可以通过将两个类放在同一个模块中来解决问题,但它们足够庞大而且足够复杂,以致它们保证自己的文件。 Thankyou
考虑打字稿。 :) – Proximo
你为什么要传递一个集合构造函数到你的模型构造函数?只需在每个文件中“需要”模型和收集定义即可。 –
因为,正如我所解释的那样,Node对象需要使用NodeCollection来保存子节点 – AdamW