Public Class CommandManager
Protected UndoCommands As New Stack(Of ICommand)
Protected RedoCommands As New Stack(Of ICommand)
'''
''' 运行命令,并将命令添加至撤销堆栈
'''
'''
Public Sub RunCommand(command As ICommand)
command.Redo()
AddUndoCommand(command)
End Sub
'''
''' 将命令添加至撤销堆栈
'''
Public Sub AddUndoCommand(command As ICommand)
UndoCommands.Push(command)
If RedoCommands.Count > 0 Then
ClearRedoCommands()
End If
End Sub
'''
''' 清空撤销命令堆栈
'''
Public Sub ClearUndoCommands()
UndoCommands.Clear()
End Sub
'''
''' 清空重做命令堆栈
'''
Public Sub ClearRedoCommands()
RedoCommands.Clear()
End Sub
'''
''' 清空撤销与重做命令堆栈
'''
Public Sub ClearCommands()
ClearUndoCommands()
ClearRedoCommands()
End Sub
'''
''' 执行撤销命令
'''
Public Sub Undo()
If UndoCommands.Count <= 0 Then Return
Dim command As ICommand = UndoCommands.Pop()
command.Undo()
RedoCommands.Push(command)
End Sub
'''
''' 执行重做命令
'''
Public Sub Redo()
If RedoCommands.Count <= 0 Then Return
Dim command As ICommand = RedoCommands.Pop()
command.Redo()
UndoCommands.Push(command)
End Sub
End Class