0% found this document useful (0 votes)
10 views13 pages

14 CommandDesignPattern

Uploaded by

Shoaib Asghar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views13 pages

14 CommandDesignPattern

Uploaded by

Shoaib Asghar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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