Command模式的实践
主题
文章将通过一个简单的 Shell 库来阐述 Command模式的一个实际应用。
如何使用 Shell 库
在开始之前,我们先来看看如何使用这个 Shell 库。 解决方案结构如(图1-1)
图1-1 解决方案
从图上可以看出,该 Shell 库非常的简单。其中 ICommand 接口定义了只定义了一个 Execute 方法,该方法的签名见代码清单 1-1.
代码清单 1-1
/// <summary>执行命令并返回命令执行结果</summary>
/// <param name="args">需要执行的命令</param>
/// <param name="executeMessage">命令执行结果</param>
void Execute(string[] args, ref string executeMessage);
/// <param name="args">需要执行的命令</param>
/// <param name="executeMessage">命令执行结果</param>
void Execute(string[] args, ref string executeMessage);
Command 项目中包含了实现了 ICommand 接口的具体类。 见代码清单 1-2
代码清单 1-2
public class AddUserCommand : ICommand
{
public void Execute(string[] args, ref string executeMessage)
{
if (args.Length != 3 || Share.IsHasAnySpace(args))
{
executeMessage = "AddUser 命令参数不正确!格式如下:AddUser userName passWord";
return;
}
string userName = args[1];
string passWord = args[2];
BllFactory.BllFactory.GetInstance().User.AddUser(userName, passWord);
executeMessage = string.Format("添加用户 {0} 成功!", userName);
}
}
{
public void Execute(string[] args, ref string executeMessage)
{
if (args.Length != 3 || Share.IsHasAnySpace(args))
{
executeMessage = "AddUser 命令参数不正确!格式如下:AddUser userName passWord";
return;
}
string userName = args[1];
string passWord = args[2];
BllFactory.BllFactory.GetInstance().User.AddUser(userName, passWord);
executeMessage = string.Format("添加用户 {0} 成功!", userName);
}
}
该具体类由客户负责创建。在代码清单 1-2 中,AddUserCommand 类实现了 ICommand 接口。具体的 Execute 方法的实现是调用了BLL层的 AddUser 方法去完成了添加用户的操作。