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

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

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

Съдържание

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

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

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


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

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

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

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 [редактиране]