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


Реализация Undo


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

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

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

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

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

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




Начало  Назад  Вперед