Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
47 views

Command Design Pattern: Rick Mercer and Rice University

The Command design pattern encapsulates a request as an object, allowing requests to be passed to other objects without knowledge of the type of request or operation. This allows requests to be parameterized, queued, logged, and supported undoable operations. The pattern defines a common interface for executing operations but allows operations to vary in implementation. Examples include using command objects for user interface actions like button clicks or saving commands for later execution.

Uploaded by

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

Command Design Pattern: Rick Mercer and Rice University

The Command design pattern encapsulates a request as an object, allowing requests to be passed to other objects without knowledge of the type of request or operation. This allows requests to be parameterized, queued, logged, and supported undoable operations. The pattern defines a common interface for executing operations but allows operations to vary in implementation. Examples include using command objects for user interface actions like button clicks or saving commands for later execution.

Uploaded by

emailmyname
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/comman
d.htm
13

You might also like