static void Main(string[] args) { Receiver receiver = new Receiver(); AddCommand addCommand = new AddCommand(receiver); RemoveCommand removeCommand = new RemoveCommand(receiver); SaveCommand saveCommand = new SaveCommand(receiver); Invoker invoker = new Invoker(); invoker.SetCommand(addCommand); invoker.ExecuteCommand(); invoker.SetCommand(removeCommand); invoker.ExecuteCommand(); invoker.SetCommand(saveCommand); invoker.ExecuteCommand(); // int[,] array = new int[5, 10]; // Console.WriteLine(string.Format("array的行:" + array.GetLength(0))); // Console.WriteLine(string.Format("array的列:" + array.GetLength(1))); // Console.WriteLine(string.Format("array的元素个数:" + array.Length)); //BaseClass baseClass = new ClassA(); //baseClass.Fun1(); //BaseClass baseClass1 = new ClassB(); //baseClass1.Fun1(); }
static void Main(string[] args) { Soliders soliders = new Soliders(); Command combinateCommand = new CombinateCommand(soliders); Command fightCommand = new FightCommand(soliders); Command cableBoatCommand = new CableBoatCommand(soliders); //设置传令官 Herald herald = new Herald(); //集合 herald.SetCommand(combinateCommand); //herald.Notify(); //战斗 herald.SetCommand(fightCommand); herald.SetCommand(fightCommand); // herald.Notify(); //铁索连舟 herald.SetCommand(cableBoatCommand); //herald.Notify(); herald.Notify(); Console.WriteLine("取消命令!"); herald.CancelCommand(cableBoatCommand); herald.Notify(); Reciver reciver = new Reciver(); AbsCommand command = new ConcreteCommand(reciver); Invoker invoker = new Invoker(); invoker.SetCommand(command); invoker.ExecuteCommand(); }
static void Main(string[] args) { Console.WriteLine("Enter First Value"); int a = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter Second Value"); int b = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter Commands for Calculator: Type 1 for Addition and 2 for substraction"); string command = Console.ReadLine(); Invoker invoker = new Invoker(); Calculator calculator = new Calculator(a, b); Add addCommand = new Add(calculator); Subtract substractCommand = new Subtract(calculator); if (command == "1") { Console.WriteLine("Add Command is selected and the Result is {0}", invoker.ExecuteCommand(addCommand)); } else if (command == "2") { Console.WriteLine("Substract Command is selected and the Result is {0}", invoker.ExecuteCommand(substractCommand)); } else { Console.WriteLine("You have entered wrong command. Please type Command '1' for addition or '2' for substraction"); } Console.ReadLine(); }
static void Main(string[] args) { Receiver r = new Receiver(); Command c = new ConcreteCommand(r); Invoker i = new Invoker(); i.SetCommand(c); i.ExecuteCommand(); /* * //开店前的准备 * Barbecuer boy = new Barbecuer(); * Command bakeMuttonCommand1 = new BakeMuttonCommand(boy); * Command bakeMuttonCommand2 = new BakeMuttonCommand(boy); * Command bakeChickenWingCommand1 = new BakeChickenWingCommand(boy); * Waiter girl = new Waiter(); * * //开门营业 顾客点菜 * girl.SetOrder(bakeMuttonCommand1); * girl.SetOrder(bakeMuttonCommand2); * girl.SetOrder(bakeChickenWingCommand1); * * //点菜完闭,通知厨房 * girl.Notify(); */ Console.Read(); }
public static void Main(string[] args) { #region Prototype var receiver = new Receiver(); var command = new ConcreteCommand(receiver); var invoker = new Invoker(); invoker.SetCommand(command); invoker.ExecuteCommand(); #endregion Prototype var barbecuer = new Barbecuer(); var waiter = new Waiter(); waiter.SetOrder(new BakeChickenWingCommand(barbecuer)); waiter.SetOrder(new BakeMuttonCommand(barbecuer)); waiter.SetOrder(new BakeMuttonCommand(barbecuer)); var willCancelOrder = new BakeMuttonCommand(barbecuer); waiter.SetOrder(willCancelOrder); waiter.CancelOrder(willCancelOrder); waiter.Notify(); Console.ReadLine(); }
static void Main(string[] args) { Receiver receiver = new Receiver(); Command command = new ConcreteCommand(receiver); Invoker invoker = new Invoker(); invoker.SetCommand(command); invoker.ExecuteCommand(); Console.ReadKey(); }
static void Main(string[] args) { // Create receiver, command, and invoker Receiver receiver = new Receiver(); Command command = new ConcreteCommand(receiver); Invoker invoker = new Invoker(); // Set and execute command invoker.SetCommand(command); invoker.ExecuteCommand(); // Wait for user Console.Read(); }
static void Main(string[] args) { // Create receiver, command and invoker Receiver receiver = new Receiver(); Command command = new ConcreteCommand(receiver); Invoker invoker = new Invoker(); //Set and execute command invoker.SetCommand(command); invoker.ExecuteCommand(); Console.ReadKey(); }
/// <summary> /// 命令模式: /// 一般来说,我们会给指定对象发送命令,然后指定对象去执行命令,比如妈妈让你洗碗(妈妈给你发命令:洗碗) /// 这样会导致耦合性很高,很难扩展 /// /// 使用命令模式,可以降低耦合 /// 我们需要给指定对象发送命令,不会直接去命令那个对象,而是会通过一个中间对象来把命令传递过去 /// 这样就降低了耦合性,增加了系统的可扩展性 /// /// 例如: /// 在部队里,团长下命令集合,不可能去给每一个士兵说集合,不现实 /// 这时团长把一连,二连,三连连长都叫过来,说集合 /// 接下来三个连长去将自己连的士兵集合起来就可以了(具体要说连下面有排,排下面有班,那也是命令,这里不细说) /// /// 所以,此时 /// 团长是发送命令者 /// 士兵是执行命令者 /// 连长是传达命令者 /// 这样团长和士兵之间基本是没有什么耦合的 /// </summary> /// <param name="args"></param> static void Main(string[] args) { //初始化执行命令者 var receiver = new Receiver(); //初始化团长命令:将命令执行者传递进去(该命令是命令谁的) var command = new RegimentalCommand(receiver); //初始化中间者:传递参数(将命令交给他) var invoker = new Invoker(command); //中间者去传递命令,然后命令接收者去执行命令 invoker.ExecuteCommand(); Console.WriteLine("End"); Console.ReadKey(); }
static void Main(string[] args) { //Receiver 實作實際執行動作 Receiver receiver = new Receiver(); //ConcreateCommand 將Receiver與Action綁定成一個通知命令 Command command1 = new ConcreateCommand1(receiver); Command command2 = new ConcreateCommand2(receiver); //透過 Invoker 設定要執行的命令與通知Receiver執行命令 Invoker invoker = new Invoker(); invoker.SetCommand(command1); // invoker.ExecuteCommand(); invoker.SetCommand(command2); invoker.ExecuteCommand(); }