Design Patterns - Command - Example 1
2012-06-07 16:35
197 查看
// command_example.cpp #include <iostream> #include <string> using namespace std; // interface Command class Command { public: virtual void execute() = 0; }; class NoCommand : public Command { public: void execute() {} }; // class Invoker // // to invoke commands // class Invoker { public: Invoker() { command = new NoCommand; } void setCommand(Command *command) { this->command = command; } void doIt() { command->execute(); } private: Command *command; }; // Commands Receivers class Receiver1 { public: void action() { cout << "Receiver1 is in action." << endl; } }; class Receiver2 { public: void action1() { cout << "Receiver2 is in action1." << endl; } void action2() { cout << "Receiver2 is in action2." << endl; } }; // Commands class Command1 : public Command { public: Command1(Receiver1 *receiver) { this->receiver = receiver; } void execute() { receiver->action(); } private: Receiver1 *receiver; }; class Command2 : public Command { public: Command2(Receiver2 *receiver) { this->receiver = receiver; } void execute() { receiver->action1(); receiver->action2(); } private: Receiver2 *receiver; }; int main(int argc, char **argv) { Receiver1 *receiver1 = new Receiver1; Receiver2 *receiver2 = new Receiver2; Command1 *command1 = new Command1(receiver1); Command2 *command2 = new Command2(receiver2); Invoker invoker; // invoker ready to give command1 to Receiver1. invoker.setCommand(command1); invoker.doIt(); // invoker ready to give command2 to Receiver2. invoker.setCommand(command2); invoker.doIt(); delete receiver1; delete receiver2; delete command1; delete command2; return 0; }
相关文章推荐
- Design Patterns - Decorator - Example 2
- Head First Design Patterns 阅读笔记之六: Command Pattern
- 用C#改写Head First Design Patterns--Command 命令(原创)
- Head First Design Patterns - Command Pattern
- Command(Chapter 20 of Pro Objective-C Design Patterns for iOS)
- 《Head First Design Patterns》笔记六:命令模式(Command Pattern)
- DesignPatterns_Command
- Design Patterns - Abstract Factory - Example 1
- Design Patterns Example Code (in C++)
- 原型模式——Head First Design Patterns
- Comparing Two High-Performance I/O Design Patterns
- Abstract Factory(Chapter 5 of Pro Objective-C Design Patterns for iOS)
- Chain Of Responsibility Design Pattern Example
- ios basic 2.1 Using design Patterns
- Head First Design Patterns - Template Method Pattern
- Visual Basic .NET Design Patterns
- Flyweight(Chapter 21 of Pro Objective-C Design Patterns for iOS)
- (转)MapReduce Design Patterns(chapter 4 (part 1))(七)
- Example uses of the command "more"
- 《Head First Design Patterns》笔记一:策略模式(Strategy Pattern)