#include <iostream> #include <string>
using namespace std;
class simpledb { public: simpledb() { } simpledb(string dbname) { db_name = dbname; }
void state() { cout<<db_name<<" is okay."<<endl; }
private: string db_name;
};
class command { public: virtual void execute() = 0; virtual ~command(){};
protected: command(){} };
class backup : public command { public: backup(string filename) : file_name(filename) { }
virtual void execute() { cout<<"backup : "<<file_name<<endl; }
private: string file_name; };
class restore: public command { public: restore(string filename): file_name(filename) { }
virtual void execute() { cout<<"restore : "<<file_name<<endl; }
private: string file_name; };
class state: public command { public: state(simpledb db) { mydb = db; }
virtual void execute() { mydb.state(); }
private: simpledb mydb; };
void click(command* cmd) { cmd->execute(); }
int main(void) { simpledb db("cdb");
command* syscmd[3];
syscmd[0]=new backup("test.txt"); syscmd[1]=new restore("test.txt"); syscmd[2]=new state(db);
click(syscmd[0]); click(syscmd[1]); click(syscmd[2]);
getchar(); //remember to delete syscmd[*] return 1; }
程序太简单了,理解了就行。