struct ServiceFactory {
virtual ~ServiceFactory() {}
virtual Service * CreateService() const = 0;
virtual const char* GetName() const = 0;
virtual int GetCmdId() const = 0;
};
//宏定义
#define SERVICE_FACTORY(ServiceClass) ServiceClass##Factory
#define SERVICE_ENTRY_DECLARE(ServiceClass) \
class SERVICE_FACTORY(ServiceClass) : public ServiceFactory { \
Service * CreateService() const; \
const char* GetName() const; \
int GetCmdId() const; \
};
#define SERVICE_ENTRY(ServiceClass, ServiceName, CmdId) \
SERVICE_ENTRY_DECLARE(ServiceClass) \
Service * SERVICE_FACTORY(ServiceClass)::CreateService() const \
{ return new ServiceClass(); } \
const char* SERVICE_FACTORY(ServiceClass)::GetName() const { return ServiceName; } \
int SERVICE_FACTORY(ServiceClass)::GetCmdId() const { return CmdId; }