1. 程式人生 > >設計模式-命令模式

設計模式-命令模式

設計模式 命令模式

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("添加一個用戶"); } } class DeleteCommand : Command { public DeleteCommand(User _user) : base(_user) { } public override void Action() { user.Action("刪除一個用戶"); } } class Invoke { private List<Command> commands = new List<Command>(); 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(); }

總結:將請求封裝成對象,可以隨意擴展請求,並支持請求排隊,隨意增加請求或者撤銷請求。
解耦了請求者與執行者。多了個中間類記錄請求者的各種請求,然後一次性傳達給執行者。
優點:支持撤銷,回滾,支持把請求寫入日誌。
缺點:命令類會很多。

設計模式-命令模式