Esiste un modello di progettazione per applicare dinamicamente trasformazioni o filtri a un modello?

0

Ad esempio, esiste un modello di un evento con determinati attributi che può essere regolato dai processi esistenti: forse uno che osserva un timbro di geolocalizzazione e determina una città vicina; un altro che guarda il numero di registrazioni e applica l'arrotondamento; un altro che calcola la popolarità locale in base ai partecipanti rispetto agli eventi vicini.

Il pezzo importante ha un modo per ordinare dinamicamente le operazioni - i filtri / trasformazioni / attività di elaborazione - in modo che tu possa passare gli eventi a un oggetto di elaborazione che organizza le attività nel ordine corretto per la configurazione / situazione, quindi passa i modelli per applicarli.

Posso pensare ad alcuni modi brutti per farlo, ma voglio sapere se esiste un modello SOLID che consentirebbe un codice migliore e più verificabile.

    
posta Bryan Agee 22.07.2014 - 20:01
fonte

2 risposte

3

Ho visto cose simili fatte usando il modello Chain of Responsibility . Fondamentalmente, ogni trasformazione / filtro è un singolo comando e la tua configurazione specifica l'ordine in cui vengono eseguiti. Il risultato di ogni comando di trasformazione può essere passato al successivo insieme a un contesto di comando per contenere altri metadati che non dovrebbero essere nei dati su cui si sta operando.

    
risposta data 22.07.2014 - 20:05
fonte
3

Pipe & Il filtro è ciò che stai cercando.

link

Fondamentalmente, si definisce un oggetto di input standard e un oggetto di output standard. Nella programmazione orientata agli oggetti, è possibile definirli facilmente come interfacce. I filtri accettano l'oggetto di input standard, applicano alcune trasformazioni e restituiscono un oggetto di output standard. Poiché ogni filtro ha lo stesso input e output, puoi unirli insieme come preferisci. Puoi facilmente produrre tubi paralleli per sfruttare i processori multithread.

Si potrebbe anche creare un oggetto di configurazione per definire i flussi di operazioni; la tua soluzione sarebbe quindi riutilizzabile.

    
risposta data 23.07.2014 - 01:56
fonte

Leggi altre domande sui tag