Command Design Pattern Rick Mercer and Rice University

  • Slides: 13
Download presentation
Command Design Pattern Rick Mercer and Rice University 1

Command Design Pattern Rick Mercer and Rice University 1

Command Design Pattern n The Command Pattern encapsulates a request as an object, thereby

Command Design Pattern n 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

General Form 3

Example for Heads First Note: Remote. Loader loads commands into slots of the remote

Example for Heads First Note: Remote. Loader loads commands into slots of the remote control 4

Command Pattern One object can send messages to other objects without knowing anything about

Command Pattern One object can send messages to other objects without knowing anything about the actual operation or the type of object n Polymorphism lets us encapsulate a request for services as an object n n n Establish a method signature name as an interface Vary the algorithms in the called methods 5

Java Examples n Sun used the Command pattern to improve the event model in

Java Examples n Sun used the Command pattern to improve the event model in Java 1. 1 n one example method signature: public void action. Perfomed(Action. Event e) n JButtons and JText. Fields send action. Performed messages to "command" objects (the listeners) without knowing what will happen n Event generators — buttons, text fields, mouse — have listener objects (actually a Vector of listener objects) 6

Uses n The Command object can also be used when you need to tell

Uses n The Command object can also be used when you need to tell the program to execute the command later. n n 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 n Log instances by

Example we saw before was Command Make 3 command classes n Log instances by writing the objects to a file n n See Save. Work. Commands. java in the Eclipse project Command. Pattern (command. zip) Like Remote. Loader in HFSP or Client in gen. form Read the objects later and execute them n n See Execute. Saved. Commands. java in the Eclipse project Command. Pattern (command. zip) Like Light on HFSP or Receiver in gen. form 8

A UML View of the Sample 9

A UML View of the Sample 9

import java. io. Serializable; // Command design pattern - Decoupling producer from consumer. public

import java. io. Serializable; // Command design pattern - Decoupling producer from consumer. public interface Work. Command { void execute(); } class Domestic. Engineer implements Work. Command, Serializable { public void execute() { System. out. println("Take out the trash. "); } } class Politician implements Work. Command, Serializable { public void execute() { System. out. println("Take money from the rich, take votes from the poor. "); } } class Programmer implements Work. Command, Serializable { public void execute() { System. out. println("Sell the bugs, charge extra for the fixes. "); } } 10

Code Demo n Need these three files Work. Command. java n Command. Client. java

Code Demo n Need these three files Work. Command. java n Command. Client. java n Command. Server. java n 11

Summary The Command design pattern encapsulates the concept of a command into an object

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

References n n n [Adelson and Soloway] B. Adelson and E. Soloway. The Role

References n n n [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/Java. Resources/Design. Patterns/comman d. htm 13