Команда (шаблон)

от Уикипедия, свободната енциклопедия
Направо към: навигация, търсене

Команда (Command) е поведенчески шаблон за дизайн, който се използва в обектно-ориентираното програмиране.

Приложение[редактиране | edit source]

Този дизайнерски шаблон има следните приложения:

  • Многостепенни отмени (undo) - В графични приложения в които има повече от една степен на отмяна на резултатите от предишното действие


Примери[редактиране | edit source]

C++[редактиране | edit source]

C#[редактиране | edit source]

namespace CommandDesignPattern 
{
         //производните обекти на този клас правят заявки според предадените им командни обекти
	class Invoker
	{
		private Command command;
		public void SetCommand ( Command command )
		{
			this.command = command;
		}
                 //този метод извиква командата
		public void ExecuteCommand ()
		{
			command.Execute ();
		}
	} //eof class 
 
 
        //производните обекти на този клас получават 
	class Receiver
	{
		public void Action ()
		{
			Console.WriteLine ( "Called ..." );
		}
	} //eof Receiver 
 
	abstract class Command
	{
		protected Receiver receiver;
		public Command ( Receiver receiver )
		{
			this.receiver = receiver;
		}
		public abstract void Execute ();
	} //eof class 
 
 
	class ConcreteCommand : Command
	{
		public ConcreteCommand ( Receiver receiver )
			: base ( receiver )
		{
		}
		public override void Execute ()
		{
			receiver.Action ();
		}
	}
 
 
	class Program
	{        //главният метод на приложението
		static void Main ( )
		{
			Receiver receiver = new Receiver (); //създаване на обекта получател
			// Remember that you don´t really need an receiver if you don´t want it.
			Command command = new ConcreteCommand ( receiver );
			Invoker invoker = new Invoker (); //създаване на заявяващия обект
			invoker.SetCommand ( command ); //конфигуриране на командата според типа и
			invoker.ExecuteCommand (); //изпълняване на командата
			Console.ReadLine ();  //използван само за спиране на конзолата
		} //eof Main
 
	} //eof class 
}//eof namespace

Java[редактиране | edit source]