Основы объектно-ориентированного проектирования

Реализация Undo


Имея список истории, достаточно просто реализовать Undo:

if on_item then history.item.undo history.back else message ("Нет команды для отката - undo") end

И снова динамическое связывание играет основную роль. Список истории history является полиморфной структурой данных:


Рис. 3.4.  Список истории с различными объектами command

При передвижении курсора влево каждое успешное значение history.item может быть присоединено к объекту любого доступного типа command. Динамическое связывание гарантирует, что в каждом случае history.item.undo автоматически выберет нужную версию undo.



Содержание раздела