Continuo ad avere problemi

Ti spiego il dilemma in breve.
Io ho dei servizi che vengono continuamente interrogari ogni tot di tempo e che possono trovarsi in due stati (aperto/chiuso). Ogni qual volta che il servizio è chiuso lo si scrive in una tabella.
Nella tabella però vorrei che fosse scritto solo la prima volta che si trova nello stato di chiuso.

Es:

1. Aperto
2. Chiuso
3. Chiuso
4. Aperto
5. Chiuso

Voglio che venga scritto solo la seconda e terza volta che si trova in chiuso.

Per fare ciò ho creato una classe lucchetto, associata ad ogni servizio. Il Lucchetto è di tipo SingleTon e si apre solo quando il servizio è aperto. Quindi viene scritta la tabella fault solo quando il servizio è chiuso e lo stato precedente del lucchetto era chiuso. Una volta fatto questo il lucchetto si chiude, bloccandone la scrittura ulteriore.

Se lo faccio con un servizio funziona. Ora vorrei creare questi oggetti lucchetti attraverso un ciclo onde evitare di istanziare tanti oggetti lucchetto e per questo vorrei clonare l'originale oggetto Lucchetto attraverso il pattern creazionale "Prototype" sull'Oggetto SingleTon.

L'ho appena fatto ma mi accorgo che con il prototype ogni qual volta creo un clone questo non fa + riferimento all'oggetto iniziale Singleton e il tutto non mi serve a niente. Il Lucchetto viene continuamente inizializzato ogni volta che il servizio riparte.

Probabilmente non sono stato chiaro, ma non mi sembrava il caso di mettere tutto quel codice. Te cosa ne pensi? Io vorrei poter creare un oggetto Lucchetto che sia di tipo SingleTon e poi creare dei cloni di questo Lucchetto e poi potermi riferire sempre e solo a questi cloni, senza crearne di nuovi.


Grazie dell'attenzione,
Matteo.