Design Pattern for Collection Edits

3

Ho una situazione in un'applicazione corrente su cui sto lavorando che richiede la modifica in batch e mi chiedo se ci siano dei pattern di progettazione che dovrei prendere in considerazione.

L'attività in corso viene fornita con una raccolta di oggetti che rappresentano i file sul disco, l'utente può modificare una proprietà su un oggetto e avere il ripple di modifica su tutti gli oggetti nella raccolta.

Le proprietà modificate appartengono agli oggetti figlio dell'oggetto file.

Sto usando C # / .NET in questa istanza e, se possibile, mi piacerebbe evitare troppe riflessioni, quindi la domanda sui modelli di design.

Fare questo con semplici eventi e riflessioni del framework è il percorso più ovvio, ma sarei davvero interessato a sapere se esiste un modello stabilito per affrontare questo tipo di scenario?

    
posta Jammer 03.12.2017 - 15:08
fonte

2 risposte

3

Esamina il Pattern composito .

Fondamentalmente sono due classi, una foglia e un composito, che implementano la stessa interfaccia. Ciò significa che il cliente non deve sapere a chi sta parlando. Il composito è solitamente supportato da una collezione che prende foglie e materiali compositi. Passa tutte le chiamate che gli vengono inviate a tutto ciò che si trova nella sua raccolta eseguendone il looping.

Dato che puoi mettere un composito nella collezione questo può seguire la struttura ad albero di un file system in modo piacevole.

    
risposta data 03.12.2017 - 17:08
fonte
2

Riepilogo del problema

Hai una collezione di oggetti. Un utente esegue alcune modifiche a uno degli oggetti. Quindi si desidera eseguire le stesse modifiche agli altri oggetti.

Soluzione proposta

Il primo approccio che viene in mente è il schema di comando , in cui un comando (modifica o modifica) è da applicare a un ricevitore (nel tuo caso il file).

Questo modello richiede che il ricevitore sia identificato nel comando quando viene creato. Quindi, quando viene creato il comando per l'oggetto iniziale, si creano quindi cloni di questo comando per ciascun ricevitore nella raccolta e si avvia l'esecuzione di questi comandi in coda.

I comandi vengono spesso utilizzati per implementare un meccanismo di modifica / annullamento (eseguendo un comando e accodando contemporaneamente il comando inverso). Quindi qui lo useresti allo stesso modo per ripetere lo stesso comando su altri oggetti.

    
risposta data 03.12.2017 - 17:46
fonte

Leggi altre domande sui tag