设计模式 - 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));
}
}
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
示例
有一个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));
}
}
相关文章推荐
- 设计模式之命令模式(Command Pattern)
- 设计模式之命令模式(Command Pattern)
- 设计模式之七 命令模式(Command Pattern)
- 设计模式读书笔记之命令模式(Command Pattern)
- 设计模式 命令模式(Command Pattern)
- 设计模式 - 命令模式(command pattern) 多命令 详解
- c++设计模式:命令模式(Command Pattern)
- 设计模式学习笔记--命令模式command pattern(Java版)
- 设计模式系列3-----C++实现命令模式(Command Pattern)
- Design Pattern Command 命令设计模式
- 设计模式——命令模式 (Command Pattern)
- Head First 设计模式 (六) 命令模式(Command pattern) C++实现
- c++设计模式:命令模式(Command Pattern)
- C#设计模式——命令模式(Command Pattern)
- 设计模式笔记之命令模式(command Pattern)
- 设计模式15:Command Pattern (命令模式)
- 设计模式笔记8:命令模式(Command Pattern)
- 设计模式之:命令模式(Command Pattern)
- 1.2设计模式在Unity中应用—Behavioral Pattern— Command Pattern 命令模式
- C#设计模式之十四命令模式(Command Pattern)【行为型】