In un'applicazione di chat ci possono essere più tipi di messaggi in arrivo da gestire. Ad esempio, ho messaggi di questo tipo: testo, collegamento, immagine e video. Il testo e il collegamento vengono gestiti allo stesso modo, ma l'immagine e il video richiedono il download del file da un altro server.
Inoltre, potrebbe essere necessario eliminare ogni messaggio. Anche l'eliminazione di ogni messaggio può essere diversa, ad esempio i messaggi di testo e di collegamento devono solo essere eliminati da un database, ma l'immagine e il video potrebbero richiedere l'eliminazione del file associato. Potrebbero esserci più operazioni di questo tipo sui messaggi supportati su alcuni tipi di messaggi, ad esempio il download di nuovi tentativi in caso di immagini e video.
Ho pensato di utilizzare la doppia spedizione con il modello di visitatore ma non si adatta correttamente. Ho bisogno di qualcosa come la tripla spedizione ma non sono sicuro di quale sia il design migliore.
In futuro potrebbero esserci più tipi di messaggi che potrebbero richiedere diversi tipi di elaborazione. Quale tipo di design garantirà l'aggiunta di un tipo di messaggio meno invasivo al codice dell'infrastruttura? Preferibilmente senza aggiungere elementi alle istruzioni "if" o ai blocchi "switch case".