命令模式





0/5 (0投票)
命令模式“将一个请求封装成一个对象,从而使你能够用不同的请求参数化客户端,对请求排队或记录请求日志,并支持可撤销的操作。”
命令模式
“将一个请求封装成一个对象,从而使你能够用不同的请求参数化客户端,对请求排队或记录请求日志,并支持可撤销的操作。”
VB 示例的命令模式
许多新的多媒体键盘都有额外的按钮,用于打开网页浏览器、MP3 播放器等。我们可以使用命令模式来编程它们,以便键盘无需知道它正在执行哪个应用程序。
’ 这是调用者
Public 类MultiMediaKeyBoard
’ 这个数组保存按钮的命令
’ 我们的键盘
Private_ButtonSlotsAs 新建ArrayList(2)
Public SubMain()
’ 设置命令对应键盘
’ 按钮。
DimaWebBrowserAs 新建WebBrowser
_ButtonSlots(0) =新建WebBrowserCommand(aWebBrowser)
’ 当键盘上的按钮被点击时,它的 API 可以向我们发送
’ 按钮的 ID。然后我们可以调用相应类中的 execute 方法
’ 对应的
CType(_ButtonSlots(buttonNumber), ICommand).execute()
End Sub
End 类
Public 接口ICommand
Subexecute()
End 接口
’ 接收者
Public 类WebBrowser
Public SubOpenWebBrowser()
’ 打开网页浏览器的代码
End Sub
End 类
’ 具体命令类
Public 类WebBrowserCommand
实现ICommand
Private_WebBrowserAsWebBrowser
Public Sub 新建(ByValWebBrowserAsWebBrowser)
_WebBrowser = WebBrowser
End Sub
Public Subexecute()实现ICommand.execute
_WebBrowser.OpenWebBrowser()
End Sub
End 类
’ 接收者
Public 类WordProcessor
Public SubOpenWordProcessor()
’ 打开文字处理器的代码
End Sub
End 类
’ 具体命令类
Public 类WordProcessorCommand
实现ICommand
_WordProcessor.OpenWordProcessor()
End Sub
End 类
Public 类MultiMediaKeyBoard
’ 这个数组保存按钮的命令
’ 我们的键盘
Private_ButtonSlotsAs 新建ArrayList(2)
Public SubMain()
’ 设置命令对应键盘
’ 按钮。
DimaWebBrowserAs 新建WebBrowser
_ButtonSlots(0) =新建WebBrowserCommand(aWebBrowser)
DimaWordProcessorAs 新建WordProcessor
_ButtonSlots(1) =新建WordProcessorCommand(aWordProcessor)
End Sub
’ 当键盘上的按钮被点击时,它的 API 可以向我们发送
’ 按钮的 ID。然后我们可以调用相应类中的 execute 方法
’ 对应的
CType(_ButtonSlots(buttonNumber), ICommand).execute()
End Sub
End 类
Public 接口ICommand
Subexecute()
End 接口
’ 接收者
Public 类WebBrowser
Public SubOpenWebBrowser()
’ 打开网页浏览器的代码
End Sub
End 类
’ 具体命令类
Public 类WebBrowserCommand
实现ICommand
Private_WebBrowserAsWebBrowser
Public Sub 新建(ByValWebBrowserAsWebBrowser)
_WebBrowser = WebBrowser
End Sub
Public Subexecute()实现ICommand.execute
_WebBrowser.OpenWebBrowser()
End Sub
End 类
’ 接收者
Public 类WordProcessor
Public SubOpenWordProcessor()
’ 打开文字处理器的代码
End Sub
End 类
’ 具体命令类
Public 类WordProcessorCommand
实现ICommand
Private_WordProcessorAsWordProcessor
Public Sub 新建(ByValWordProcessorAsWordProcessor)
_WordProcessor = WordProcessor
End Sub
_WordProcessor.OpenWordProcessor()
End Sub
End 类