int main() { //invoker Invoker invoker; //command receiver--->the real object to execute command Light *light = new Light(); TV *tv = new TV(); //command LightCommand *lightCom = new LightCommand(); TVCommand *tvCom = new TVCommand(); lightCom->setReceiver(light); tvCom->setReceiver(tv); invoker.addCommand(lightCom); invoker.addCommand(tvCom); invoker.execute(); invoker.undo(); return 0; }
int main(int argc, char *argv[]) { Data data(10); AddCommand add(&data); SubCommand sub(&data); Invoker invoker; cout << "value = " << data.getValue() << endl; invoker.invoke(&add); cout << "value = " << data.getValue() << endl; invoker.invoke(&sub); cout << "value = " << data.getValue() << endl; invoker.undo(); cout << "value = " << data.getValue() << endl; invoker.undo(); invoker.undo(); invoker.undo(); cout << "value = " << data.getValue() << endl; return 0; }
void main() { IReceiver* reciever = new IReceiver(2); IncrementCommand* increCmd = new IncrementCommand(reciever); DecrementCommand* decreCmd = new DecrementCommand(reciever); SquareCommand* squreCmd = new SquareCommand(reciever); SqrtCommand* sqrtCmd = new SqrtCommand(reciever); Invoker* invoker = new Invoker(); invoker->addCmd(increCmd); invoker->addCmd(decreCmd); invoker->addCmd(squreCmd); invoker->addCmd(sqrtCmd); invoker->notify(); invoker->undo(); delete increCmd; delete decreCmd; delete squreCmd; delete sqrtCmd; delete invoker; delete reciever; }