Per mantenere le classi disaccoppiate sto utilizzando il modello di mediatore in questo modo:
class Mediator {
constructor(canvas, selectionBox, undoManager) {
this.canvas = canvas
this.selectionBox = selectionBox
this.undoManager = undoManager
}
addText(text) {
this.canvas.addText(text)
this.undoManager.captureUndo()
this.selectionBox.update()
}
addImage(image) {
this.canvas.addImage(image)
this.undoManager.captureUndo()
this.selectionBox.update()
}
// ... etc
}
man mano che vengono aggiunti sempre più metodi alla classe Mediator, non diventerà un oggetto divino?
In questo caso, come posso risolvere questo? Magari creare sub-mediatori che raggruppino le azioni e usino un mediatore genitore per coordinarle?
(*) Per la cronaca ho appena iniziato a utilizzare questo pattern e non sono sicuro di farlo correttamente.