xecuteO { cout « “Hello “; } }

Автор admin Четверг, 18 июня 2009 11:32

xecuteO { cout « “Hello “; } }: class World : public Command { public: void executeO { cout « “World! “; } }: class IAm : public Command { public: void executeO { cout « “I’m the command pattern!”; } }: // Объект для хранения набора команд: class Macro { vector commands: public: void add(Command* c) { commands.push_back(c); } void runO { vector::iterator it = commands.begin(); whileOt != commands, end О) (*it++)->execute(): } }: int mainO { Macro macro: macro.add(new Hello): Команда 483 macro.add(new World): macro.add(new IAm): macro.run(): } ///:- Команда предназначена прежде всего для передачи нужного действия функции или объекту. В приведенном примере это позволяет создать очередь операций для последующего выполнения. Иначе говоря, поведение программы формируется динамически — обычно для этого приходится писать новый код, но в данном случае задача решается простой интерпретацией сценария, хотя при выполнении очень сложных операций лучше воспользоваться паттерном Интерпретатор (Interpreter). В БЧ сказано: «Команды представляют собой объектно-ориентированную замену для функций обр


Комментарии закрыты.