Wpis z mikrobloga

  • 2
#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
  • Odpowiedz
via Android
  • 0
@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 :/
  • Odpowiedz
@japer: Yy, twój problem rozumiem tak: chcesz sobie poodwiedzać jakąś kolekcję i na jej elementach wykonywać jakieś akcje, natomiast jak np poleci wyjątek to wszystko cofać, tak?
  • Odpowiedz
@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.
  • Odpowiedz