Qual è il modo consigliato di fare riferimento ad altre classi all'interno di una classe contenitore mantenendo tutto disaccoppiato?
Nell'esempio seguente, vorrei aggiungere automaticamente al SceneGraph
il Path
costruito.
class SceneGraph {
constructor() {
this.children = []
}
addChild(child) {
this.children.push(child)
}
}
class Path {
constructor(opts) {
this.color = opts.color
// @NOTE: Coupling here
sceneGraph.addChild(this)
}
}
// User space
const sceneGraph = new SceneGraph()
const path = new Path({ color: 'red' })
"Automaticamente" qui significa che mi piacerebbe evitare di fare qualcosa del genere:
const path = new Path({ color: 'red' })
sceneGraph.addChild(path)
... che sembra abbastanza intuitivo, ma presto comincia a diventare goffo man mano che vengono aggiunti sempre più metodi alla Path
che dovrebbe anche influire sulla SceneGraph
- i.e path.remove()
.
L'esempio sopra mi sembra problematico, dal momento che SceneGraph
è intrinsecamente accoppiato con Path
.
C'è un modello disponibile che risolve questo problema?