⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 command.c

📁 Design Pattern C Source Code
💻 C
字号:
/**/#include "List.H"class Document {  public:    Document(const char*);    void Open();    void Paste();};class Application {  public:    Application();    void Add(Document*);};/**/class Command {public:    virtual ~Command();    virtual void Execute() = 0;protected:    Command();};/**/class OpenCommand : public Command {public:    OpenCommand(Application*);    virtual void Execute();protected:    virtual const char* AskUser();private:    Application* _application;    char* _response;};/**/OpenCommand::OpenCommand (Application* a) {    _application = a;}/**/void OpenCommand::Execute () {    const char* name = AskUser();    if (name != 0) {        Document* document = new Document(name);        _application->Add(document);        document->Open();    }}/**/class PasteCommand : public Command {public:    PasteCommand(Document*);    virtual void Execute();private:    Document* _document;};/**/PasteCommand::PasteCommand (Document* doc) {    _document = doc;}void PasteCommand::Execute () {    _document->Paste();}/**/template <class Receiver>class SimpleCommand : public Command {public:    typedef void (Receiver::* Action)();    SimpleCommand(Receiver* r, Action a) :        _receiver(r), _action(a) { }    virtual void Execute();private:    Action _action;    Receiver* _receiver;};/**/template <class Receiver>void SimpleCommand<Receiver>::Execute () {    (_receiver->*_action)();}/**/class MyClass {public:  void Action();};void dummy () {/**/MyClass* receiver = new MyClass;// ...Command* aCommand =    new SimpleCommand<MyClass>(receiver, &MyClass::Action);// ...aCommand->Execute();/**/}/**/class MacroCommand : public Command {public:    MacroCommand();    virtual ~MacroCommand();    virtual void Add(Command*);    virtual void Remove(Command*);    virtual void Execute();private:    List<Command*>* _cmds;};/**/void MacroCommand::Execute () {    ListIterator<Command*> i(_cmds);    for (i.First(); !i.IsDone(); i.Next()) {        Command* c = i.CurrentItem();        c->Execute();    }}/**/void MacroCommand::Add (Command* c) {    _cmds->Append(c);}void MacroCommand::Remove (Command* c) {    _cmds->Remove(c);}/**/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -