Page 77 - 4190
P. 77

  потрібна  підтримка  скасовування  операцій.  Операція  Execute
            об'єкта Команда може зберегти стан, що необхідний для скасування
            дій, виконаних Командою. У цьому разі у інтерфейсі класу Command
            повинна бути додаткова операція Unexecute, котра скасовує дії, вико-

            нанні попереднім викликом операції Execute. Виконані команди збе-
            рігаються у списку історії. Для реалізації довільної кількості рівней
            скасування та повтору команд треба обходити цей список відповідно

            в зворотному та прямому напрямках, викликаючи під час відвідуван-
            ня кожного елементу операцію Unexecute або Execute;
                    підтримати протоколювання змін, щоб їх можна було виконати
            повторно  після  аварійної  зупинки  системи.  Доповнивши  інтерфейс

            класу Command операціями зберігання та завантаження, можна вести
            протокол змін у внутрішній пам'яті. Для відновлення після збою тре-
            ба буде завантажити збережені команди з диску та повторно виконати

            їх за допомогою операції Execute;
                    треба структурувати систему на основі високорівневих опера-
            цій, що побудовані з примітивних. Така структура є типовою для ін-

            формаційних  систем,  що  підтримують  транзакції.  Транзакція  інкап-
            сулює множину змін даних. Шаблон Команда дозволяє моделювати
            транзакції. В усіх команд є спільний інтерфейс, що надає можливість

            працювати однаково з будь-якими транзакціями. За допомогою цього
            шаблону можна легко додавати у систему нові види транзакцій.
                  UML-діаграма  класів  патерну  Command  зображена  на  рисунку
            7.9.





























                          Рисунок 7.9 – UML-діаграма класів патерну Command


                                                              77
   72   73   74   75   76   77   78   79   80   81   82