1 / 10

Command Design Pattern

Command Design Pattern. Source: Design Patterns – Elements of Reusable Object-Oriented Software; Gamma, et. al. Problem. Sometimes a class needs to perform actions without knowing what the actions are. Example: GUI Toolkit. A GUI toolkit provides a full complement of components

pamelahill
Download Presentation

Command Design Pattern

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Command Design Pattern Source: Design Patterns – Elements of Reusable Object-Oriented Software; Gamma, et. al.

  2. Problem • Sometimes a class needs to perform actions without knowing what the actions are

  3. Example: GUI Toolkit • A GUI toolkit provides a full complement of components • Buttons, scroll bars, text boxes, menus, etc. • Toolkit components know how to draw themselves on the screen, but they don't know how to perform application logic • Application developers need a way to associate application logic with GUI components • What should happen when a button is pressed? • What should happen when a menu item is selected? • GUI components need to perform an unknown operation when they are activated by the user

  4. Solution

  5. Solution

  6. Consequences • Completely decouples objects from the actions they execute • Objects can be parameterized with arbitrary actions • Adding new kinds of actions is easy • Just create a new class that implements the Command interface

  7. Known Uses: Task Scheduling Service • Generic task scheduling service allow tasks to be scheduled by • Interval (e.g., every hour) • Date/time (e.g., on February 8th at 1:00pm) • Etc. • Tasks are defined using Command objects • Scheduling service executes Command object at the appropriate time, having no idea what it actually does

  8. Known Uses: Undo/Redo • Store a list of actions performed by the user • Each action has • A “do” method that knows how to perform the action • An “undo” method that knows how to reverse the action • Store a pointer to the most recent action performed by the user • Undo – “undo” the current action and back up the pointer • Redo – move the pointer forward and “redo” the current action

  9. Known Uses: Recording user actions • Macros • Record a sequence of user actions so they can be turned into a macro • Macro can be re-executed on demand by the user

  10. Known Uses: Multi-user network games • Actions performed by a player must be broadcast to all other players and executed on their local machines • How could we use the Command pattern to do this?

More Related