Windows Form编程中的Command模式

Command模式,或者类似一些模式,个人觉得是C++或Java风格的,但不代表这些模式在使用VB或者Windows Form编程时就不需要。

Command模式核心思想是使界面的类代码和动作代码分离,例如一个创建菜单的代码(非应用程序调用创建菜单的类,而是菜单类),在其动作(Click)代码中没有相关的具体的操作的代码,那么,怎么实现呢?在菜单项类中有一个Command接口的引用,其Click过程调用这个Command的Execute方法。而具体的Command对象则由App类来绑定(具体可以参考GoF的设计模式)。

对于VB或者Windows Form开发,基本上没有这个需求,因为通过事件机制,界面的操作和动作的操作可以在其事件中实现。 界面的组件是已经设计好的,对于动作的处理代码,在相应的事件处理程序中处理就可以了。但对于一些需求,还是需要使用Command模式来做一些事情。

例如要记录用户动作,判读是否有该操作的权限,或者给操作增加Undo(经典的Command模式的需求),那么就可以使用Command模式。通过Command模式,将此类代码从界面窗体中隔离出去,例如在一个按钮单击事件中可以使用如下代码:

_testCommand.Execute(...)

在此Command的实现中,可以对权限做检查,对动作作记录。

另外,对于一些由事件激发的动作,也可以通过Command实现具体动作,将具体操作代码移出窗体。

在VB 6中,笔者基本是使用在模块中建立一系列的Command过程来进行动作的操作的。个人觉得,Command的思想在于隔离界面和动作,Bob的《敏捷软件开发》中有一个复印机应用的例子。

原文地址:https://www.cnblogs.com/maweifeng/p/286202.html