Sto eseguendo un server che a volte deve cercare ciò che un client richiede. Mi piacerebbe scrivere la query del client sul disco per i record, ma non voglio rallentare la ricerca più di quanto sia necessario. (La ricerca è già il collo di bottiglia ...)Utilizzare correttamente il modello di progettazione singleton
Quindi, quando il client esegue una ricerca, sto facendo in modo che il thread del client invii un messaggio a un thread singleton, che gestirà la scrittura del disco, mentre il thread del client continua a gestire le richieste del cliente. In questo modo, il file su disco non ha problemi di sincronizzazione e non rallenta l'esperienza dei client.
Ho una domanda concettuale qui: il singleton è appropriato in questo caso? Ho usato un po 'troppo il pattern di progettazione del singleton nella mia recente programmazione, e voglio assicurarmi che lo stia usando per l'uso previsto.
Qualsiasi feedback è molto apprezzato.
È difficile rispondere a questa domanda senza visualizzare l'architettura generale. Ci sono degli inconvenienti al modello singleton (causa difficoltà di testing unitario, ecc.), Sta a te decidere se sono rilevanti o meno ... –
Grazie per la rapida risposta Oli; Ho letto delle difficoltà di test unitario ma non ho compreso le implicazioni generali. Perché evitare uno stato globale di tale importanza? Ad esempio, se c'è un solo file su disco su cui scrive un programma, non è necessario assicurarsi che non sia possibile accedervi contemporaneamente da parti diverse? – Sal
l'esistenza di uno stato globale può rendere difficile l'iniezione di dipendenze (questa è la base di [test di simulazione] (http://en.wikipedia.org/wiki/Mock_object)). Guarda questo discorso per maggiori dettagli: http://googletesting.blogspot.com/2008/11/clean-code-talks-global-state-and.html. –