Command Design Pattern: Rick Mercer and Rice University
Command Design Pattern: Rick Mercer and Rice University
Rick Mercer
and Rice University
1
Command Design Pattern
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;
10
Code Demo
CommandServer.java
11
Summary
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