您的位置:首页 > 其它

设计模式 - Command Pattern(命令模式)

2007-04-16 10:04 651 查看
介绍
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。

示例
有一个Message实体类,某个类对它的操作有Insert()和Delete()方法。现在要求可以对之前的所有操作做撤销和重复。
using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command
using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command

SqlMessage

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command

ICommand

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command

SqlMessageCommand

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command

Message

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command

client

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using Pattern.Command;

public partial class Command : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Message m = new Message();

Response.Write("操作");
Response.Write("<br />");
Response.Write(m.Do(Action.Insert, new MessageModel("第1条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Insert, new MessageModel("第2条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Insert, new MessageModel("第3条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Insert, new MessageModel("第4条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Delete, new MessageModel("第2条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Insert, new MessageModel("第5条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Delete, new MessageModel("第3条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Insert, new MessageModel("第6条", DateTime.Now)));
Response.Write("<br />");
Response.Write(m.Do(Action.Insert, new MessageModel("第7条", DateTime.Now)));
Response.Write("<br />");
Response.Write("<br />");

Response.Write("撤销4次操作");
Response.Write("<br />");
Response.Write(m.Undo(4));
Response.Write("<br />");
Response.Write("<br />");

Response.Write("重复2次操作");
Response.Write("<br />");
Response.Write(m.Redo(2));
Response.Write("<br />");
Response.Write("<br />");

Response.Write("撤销3次操作");
Response.Write("<br />");
Response.Write(m.Undo(3));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: