0% found this document useful (0 votes)
10 views

14 CommandDesignPattern

Uploaded by

Shoaib Asghar
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

14 CommandDesignPattern

Uploaded by

Shoaib Asghar
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 13

Command Design Pattern

Rick Mercer
and Rice University

1
Command Design Pattern
 The Command Pattern encapsulates a
request as an object, thereby letting you
parameterize other objects with different
requests, queue or log requests, and support
undoable operations.

2
General Form

3
Example for Heads First
Note: RemoteLoader loads commands into slots of the remote control

4
Command Pattern
 One object can send messages to other
objects without knowing anything about the
actual operation or the type of object
 Polymorphism lets us encapsulate a request
for services as an object
 Establish a method signature name as an
interface
 Vary the algorithms in the called methods
5
Java Examples
 Sun used the Command pattern to improve the
event model in Java 1.1
 one example method signature:
public void actionPerfomed(ActionEvent e)
 JButtons and JTextFields send actionPerformed

messages to "command" objects (the listeners) without


knowing what will happen
 Event generators — buttons, text fields, mouse —
have listener objects (actually a Vector of listener
objects)

6
Uses
 The Command object can also be used when
you need to tell the program to execute the
command later.
 In such cases, you are saving commands as objects
to be executed later
 You could also sending command objects over
the network (in new project) or save them in a
collection class such as a Stack for undo/redo
operations
7
Example we saw before was
Command
 Make 3 command classes
 Log instances by writing the objects to a
file
 See SaveWorkCommands .java in the Eclipse project
CommandPattern (command.zip)
 Like RemoteLoader in HFSP or Client in gen. form
 Read the objects later and execute them
 See ExecuteSavedCommands .java in the Eclipse
project CommandPattern (command.zip)
 Like Light on HFSP or Receiver in gen. form
8
A UML View of the Sample

9
import java.io.Serializable;

// Command design pattern - Decoupling producer from consumer.


public interface WorkCommand {
void execute();
}

class DomesticEngineer implements WorkCommand, Serializable {


public void execute() {
System.out.println("Take out the trash.");
}
}

class Politician implements WorkCommand, Serializable {


public void execute() {
System.out.println("Take money from the rich, take votes from the poor.");
}
}

class Programmer implements WorkCommand, Serializable {


public void execute() {
System.out.println("Sell the bugs, charge extra for the fixes.");
}
}

10
Code Demo
 Need these three files
 WorkCommand.java
 CommandClient.java

 CommandServer.java

11
Summary
 The Command design pattern encapsulates
the concept of a command into an object
 A command object could be sent across a
network to be executed elsewhere or it
could be saved as a log of operations

12
References
 [Adelson and Soloway] B. Adelson and E. Soloway. The Role of Domain
Experience in Software Design. IEEE Trans. on Software Engineering, V
SE-11, N 11, 1985, pp. 1351-1360.
 [Linn and Clancy] M. Linn and M. Clancy, The Case for Case Studies of
Programming Problems. Communications of the ACM V 35 N 3, March
1992, pp. 121-132.
 [Soloway and Ehrlich] E. Soloway and K. Ehrlich, Empirical Studies of
Programming Knowledge, IEEE Transactions on Software Engineering V
SE-10, N 5, September 1984.
 [Curtis] B. Curtis, Cognitive Issues in Reusing Software Artifacts. In
Software Reusability, V II. ed. T. Biggerstaff and A. Perlis, Addison
Wesley 1989, pp. 269-287.
 [Sierra and Bates ], Heads First Design Patterns
 http://www.exciton.cs.rice.edu/JavaResources/DesignPatterns/
command.htm
13

You might also like