Programming - Command Behavioral Design Pattern


Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.

andThe classes and/or objects participating in this example are:

  • Command
    • declares an interface for executing an operation
  • ConcreteCommandand
    • defines a binding between a Receiver object and an action
    • implements Execute by invoking the corresponding operation(s) on Receiver
  • Client
    • creates a ConcreteCommand object and sets its receiver
  • Invokerand
    • asks the command to carry out the request
  • Receiverand
    • knows how to perform the operations associated with carrying out the request.
// Command pattern -- Structural example

using System;

namespace DoFactory.GangOfFour.Command.Structural
{

// MainApp test applicatio

class MainApp
{
static void Main()
{
// 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();
}
}

// "Command"

abstract class Command
{
protected Receiver receiver;

// Constructor
public Command(Receiver receiver)
{
this.receiver = receiver;
}

public abstract void Execute();
}

// "ConcreteCommand"

class ConcreteCommand : Command
{
// Constructor
public ConcreteCommand(Receiver receiver) :
base(receiver)
{
}

public override void Execute()
{
receiver.Action();
}
}

// "Receiver"

class Receiver
{
public void Action()
{
Console.WriteLine("Called Receiver.Action()");
}
}

// "Invoker"

class Invoker
{
private Command command;

public void SetCommand(Command command)
{
this.command = command;
}

public void ExecuteCommand()
{
command.Execute();
}
}
}
Output expected:
Called Receiver.Action()


Home | Privacy Policy | Site Map | Links | Company | Contact Us | Arena           

We provide cutting edge software development, consultancy and web design services            

There are currently 637 user(s) with 40688 hits.