Questa domanda si riferisce a una domanda che ho chiesto in precedenza, che può essere utilizzata come riferimento qui: È questo il modo migliore per avvicinarsi a questo design? Questo è un esempio di MVC?
Durante la codifica, mi sono reso conto che non sto creando un "accoppiamento lento". Il modo in cui sto cercando di risolvere il problema al momento è la creazione di un'istanza della classe Log Collector in MAIN e di passarla a ogni costruttore di classi di form.
Ora, in teoria, la classe Log Collector deve essere istanziata una sola volta per tutto il tempo di esecuzione del programma. Stavo pensando di usare un Singleton Pattern per questa classe, ma pensavo che se due form dovessero aggiornare questa classe allo stesso tempo, ci sarebbe un problema.
Quale sarebbe il modo migliore per condividere la classe di Log Collector tramite più moduli senza istanziare ogni volta una nuova versione della classe Log Collector?
Ho fatto qualche ricerca prima di postare questa domanda e ho letto alcune persone che dicono di usare una classe statica per questo tipo di design. Tuttavia, questo non mi sembra un accoppiamento lento.
Un'altra domanda
Sarebbe meglio utilizzare un'interfaccia per la classe Log Collector qui per tutti i moduli che vogliono comunicare con essa? Ad esempio:
public interface LogCollectorInterface
{
void SendLogMessage(string logMessage);
}
Ora, quando tutti i moduli vogliono comunicare con la classe Log Collector , questa è l'unica funzione che devono realmente utilizzare, SendLogMessage. Istanziare l'interfaccia piuttosto che la classe Log Collector è il modo migliore per farlo?
FWIW, non sono sicuro che "l'accoppiamento libero" sia la direzione migliore è la strada da percorrere. È una di quelle cose a cui mi sono aggrappato mentre leggevo le domande relative a OOP. Essendo un nuovo programmatore OOP, ha più senso per me sia dal punto di vista organizzativo che di testing stand-on.
Modifica Questa non sarà un'applicazione multi-threading, quindi non è possibile aggiornare contemporaneamente la classe del programma di raccolta log di due moduli.