Wpis z mikrobloga

#programowanie #wzorceprojektowe #cpp

W trakcie pisania menedżera zadań...

Mój menedżer opiera się na wzorcu Odwiedzającego, ale potrzebuje coś do transakcyjności dla wizytatora instalacji.

Jak to zrealizować? Można użyć wzorca Polecenie, ale w jaki sposób, aby wykonać tą transakcyjność? Stworzyć stos poleceń?

Macie jakieś protipy?
  • 8
@calka: wtedy zapisywałbym historię poleceń na stos i w razie niepowodzenia ściągałbym ze stosu i cofał operację

tylko jest jeden problem, jak spowodować, żeby w razie wyrzucenia wyjątku stos sam podjął operację cofania zmian :/
@japer: No, więc tak to można zrobić :) commit() po prostu czyści twoją historię i żadnego rollbacka na tych obiektach nie woła (no i tego commita wołasz sobie jak już wszystko odwiedzisz i wiesz, że wszystko jest ok). Destruktor natomiast robi rollback - zawła się on jak przyleci wyjątek.