class User
{
public string name { get; set; }
public void Action(string command)
{
Console.WriteLine("{0}",command);
}
}
abstract class Command
{
protected User user;
public Command(User _user)
{
user = _user;
}
abstract public void Action();
}
class AddCommand : Command
{
public AddCommand(User _user) : base(_user)
{
}
public override void Action()
{
user.Action("添加一個(gè)用戶");
}
}
class DeleteCommand : Command
{
public DeleteCommand(User _user) : base(_user)
{
}
public override void Action()
{
user.Action("刪除一個(gè)用戶");
}
}
class Invoke
{
private List commands = new List();
public void AddCommand(Command command)
{
commands.Add(command);
}
public void RemoveCommand(Command command)
{
commands.Remove(command);
}
public void Notify()
{
foreach (var item in commands)
{
item.Action();
}
}
}
//前端
static void Main(string[] args)
{
User user = new User();
Demo.Command command = new Demo.AddCommand(user);
Demo.Command command2 = new Demo.AddCommand(user);
Demo.Command command3 = new Demo.DeleteCommand(user);
Invoke i = new Invoke();
i.AddCommand(command);
i.AddCommand(command);
i.AddCommand(command3);
i.Notify();
Console.ReadLine();
}
總結(jié):將請(qǐng)求封裝成對(duì)象,可以隨意擴(kuò)展請(qǐng)求,并支持請(qǐng)求排隊(duì),隨意增加請(qǐng)求或者撤銷請(qǐng)求。
解耦了請(qǐng)求者與執(zhí)行者。多了個(gè)中間類記錄請(qǐng)求者的各種請(qǐng)求,然后一次性傳達(dá)給執(zhí)行者。
優(yōu)點(diǎn):支持撤銷,回滾,支持把請(qǐng)求寫入日志。
缺點(diǎn):命令類會(huì)很多。
創(chuàng)新互聯(lián)建站成立于2013年,我們提供高端成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)公司、網(wǎng)站定制、成都全網(wǎng)營銷、微信平臺(tái)小程序開發(fā)、微信公眾號(hào)開發(fā)、營銷推廣服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計(jì)、程序開發(fā)來完成項(xiàng)目落地,為木屋企業(yè)提供源源不斷的流量和訂單咨詢。