creativity in code.

creativity is that spark of electricity before an explosion.
it allows us, in a single instance to explore all possibilities without hesitation.

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()



Other pages of interest:
[+] Programming - Design patterns in Software
[+] C++ creator, Bjarne Stroustrup bares all in Computerworld interview
[+] The Apache Jakarta Project has released JMeter 2.3
[+] Java JSP and Sever Pages
[+] .NET Enterprise provides a truly robust and scalable platform to build business applications on I..
[+] The Future of Javascript - The Creator ponders
[+] Java and .NET both bring something to the Enterprise arena
[+] Microsoft DLR (Dynamic Language Runtime) information released
[+] Microsoft joins OpenAjax Alliance
[+] Running C and Python in browser. Advent of the Low Level Virtual Machine
[+] Case studies - Software in business


Comments(0)

add comment Add Comment

Add your comment

Email address:
Your name:
Do you want your email to be visible?: