Ich suche nach etwas Ähnlichem wie die Proxy-Muster oder die Dynamische Proxy-Klassen nur, dass ich keine Methodenaufrufe abfangen möchte, bevor sie auf dem echten Objekt aufgerufen werden, sondern ich möchte Eigenschaften abfangen, die geändert werden. Ich möchte, dass der Proxy in der Lage ist, mehrere Objekte mit unterschiedlichen Eigenschaftssätzen darzustellen. Etwas wie die Proxy-Klasse in Action Script 3 wäre in Ordnung.
Folgendes möchte ich generell erreichen:
Ich habe einen Thread, der mit einem Objekt läuft, das eine Liste von Werten (Zahlen, Strings, Objekte) verwaltet, die von anderen Threads im Programm übergeben wurden, so dass die Klasse sich um die Erstellung regelmäßiger persistenter Schnappschüsse auf der Festplatte zum Zweck des Checkpointing der Anwendung kümmern kann. Dieses Persistor-Objekt verwaltet ein "Dirty"-Flag, das angibt, ob sich die Liste der Werte seit dem letzten Checkpoint geändert hat und muss die Liste sperren, während sie auf die Festplatte geschrieben wird.
Der Persistor und die anderen Komponenten identifizieren ein bestimmtes Element über einen gemeinsamen Namen, so dass die anderen Komponenten bei der Wiederherstellung nach einem Absturz zunächst prüfen können, ob der Persistor ihre letzte Kopie gespeichert hat, und dann dort weiterarbeiten können, wo sie aufgehört haben.
Während des normalen Betriebs, um mit den Objekten zu arbeiten, die sie dem Persistor übergeben haben, möchte ich, dass sie einen Verweis auf ein Proxy-Objekt erhalten, das so aussieht, als wäre es das ursprüngliche, aber wann immer sie einen Wert darauf ändern, bemerkt der Persistor dies und handelt entsprechend, z. B. indem er das Element oder die Liste als schmutzig markiert, bevor er den tatsächlichen Wert setzt.
Editar : Gibt es alternativ generische Setter (wie in PHP 5) in Java, d.h. eine Methode, die aufgerufen wird, wenn eine Eigenschaft nicht existiert? Oder gibt es eine Art von Objekt, dem ich zur Laufzeit Eigenschaften hinzufügen kann?