1.从书中整理出简单命令模式,备忘 CProtocol.h #pragma once class CProtocol { public: virtual ~CProtocol(void); virtual void Execute() = 0; char* Data(){return _data;}; protected: CProtocol(void); char* _data; }; template <class Logic> class CSimapleProtocol : public CProtocol { public: typedef void (Logic::*Action)(CProtocol* p); CSimapleProtocol(char* str, Logic* lg, Action a):_logic(lg),_action(a){_data = str;}; virtual void Execute() { (_logic->*_action)(this); }; private: Action _action; Logic* _logic; }; Test.cpp #include "Protocol.h" class CLogic { public: void Action(CProtocol* p) { printf("%s/n", p->Data()); } }; int _tmain(int argc, _TCHAR* argv[]) { CLogic *lg = new CLogic(); CProtocol* pro = new CSimapleProtocol<CLogic>("Hello World", lg, &CLogic::Action); pro->Execute(); return 0; }