Sto lavorando all'applicazione di disegno e voglio fornire una griglia con funzionalità di snap alla griglia. Sto cercando di trovare il modo giusto di farlo (idealmente un modello di progettazione), ma sono abbastanza confuso riguardo alla classe giusta che dovrebbe essere responsabile di ciò.
Ho una classe editor che ha un oggetto strumento attivo. L'editor sta ascoltando tutte le azioni dell'utente (clic del mouse, spostamento del mouse e così via ...) e le passa all'oggetto strumento attivo. L'oggetto strumento attivo gestisce quindi quegli eventi e restituisce la forma in base al suo stato (il primo clic attiva lo strumento, quindi ascolta il movimento del mouse e disegna l'anteprima della forma e il secondo clic crea la forma nella mia classe del modello).
Sto pensando di usare il pattern Filtro di intercettazione - ogni evento passerà attraverso il filtro per primo e il risultato sarà passato allo strumento attivo quindi. Immagino che potrebbe funzionare per la creazione di oggetti, ma cosa fare con le azioni di spostamento e ridimensionamento? Quelli dipendono dall'oggetto reale che viene spostato / ridimensionato.