Diciamo che ho un endpoint di canale in cui ricevo messaggi. Perché voglio elaborare i messaggi in modo diverso a seconda della sua proprietà Header
, piuttosto che creare un massiccio switch
. Creo diverse strategie con il contratto:
interface IMessageHandler
{
String MessageHeader {get;}
void Handle(Message msg);
}
Quindi posso aggiungere nuovi gestori per i nuovi messaggi senza modificare ciò che è già presente. Ma questo lascia la porta aperta per avere più gestori che gestiscono lo stesso tipo di messaggio. O con un piccolo cambiamento, rendere un gestore in grado di gestire diversi tipi di messaggi:
interface IMessageHandler
{
Boolean CanHandle(Message msg);
void Handle(Message msg);
}
Ma ... poi inizia a guardare molto al pattern pub / sub, dove la proprietà Header
del messaggio sarebbe l'argomento a cui i gestori si iscrivono ...
Dov'è la linea che separa entrambi i pattern?