Bsr

Voilà je gère des objets persistants en relation avec une base de données

J'ai la structure suivante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
TOPFBusinessObject
  |
  +-- TOPFPersistentObject
        |
        +-- TOPFAttributeList
              |
              +-- [0] TOPFAttribute
              +-- [1] TOPFAttribute
              +-- ...
              +-- [n] TOPFAttribute
Bref rien que du très classique...
Un même TOPFPersistentObject peut être utilisé par N TOPFBusinessObject.

Maintenant lorsque je modifie le TOPFBusinessObject donc en fait au final des TOPFAttribute je peux soit créer un memento pour chaque Attribut avec possibilité d'un undo/redo soit cloner l'attribut.
Une autre possibilité pourrait être de cloner carrément le TOPFPersistentObject et le rattacher uniquement au TOPFBusinessObject qui est à l'origine de la modification ou là encore d'utiliser le memento pattern mais ce dernier me semble lourd à mettre en place.

Au départ j'étais parti sur l'utilisation du couple newvalue/oldvalue en dur
dans chaque TOPFAttribute mais je trouve maintenant que ce n'est pas pratique. Je veux pouvoir savoir quel TOPFBusinessObject est à l'origine de quelle modification et surtout que les notifications associées aux modifications sur chaque attribut ne se propagent pas.