Sto progettando un'applicazione per il disegno vettoriale.
Ho bisogno di implemente copia e incolla, inserimento di forme, cancellazione e trasformazione pur essendo in grado di includere nuovi strumenti con facilità in futuro.
Per come la penso io, questa è una macchina a stati finiti, quindi ho pensato a un pattern di stato. Lo stadio si comporta in modo diverso in base al suo stato interno. Ogni stato sarebbe uno strumento.
var stage = new StageManager(); var insert = new InsertTool(); var copy = new CopyTool(); var paste = new PasteTool(); var select = new SelectTool(); stage.registerTool(insert); stage.registerTool(copy); stage.registerTool(paste); stage.registerTool(select);
Se, per esempio, l'utente ha appena incollato una forma, StageManager passa alla modalità di selezione (SelectTool).
onMouseUp(event){
this.stageManager.addShapes(this.stageManager.clipboard.getAll());
// Just pasted, transition to selectionTool
this.stageManager.chooseTool('selection-tool');
}
// From now on, stage behaves like a selectionTool.
È un'architettura saggia per un'app di diagrammi?