中国开发网: 论坛: 程序员情感CBD: 贴子 160462
furnace
考。。。都是你这种人,写这样的代码,class里面放class,template.让那种自动生成uml的程序,用不了,害得我自己画
看我写的,让together,生成uml利马晕菜


////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/**
* Interface for message handler having two parameters:
* - external data storage
* - message
*/
template <typename EXTERNAL_DATA_STORAGE_TYPE,
typename MESSAGE_TYPE>
class MessageHandlerIf {
public:

typedef EXTERNAL_DATA_STORAGE_TYPE ExternalDataStorageType;
typedef MESSAGE_TYPE Message;

virtual void handleMessage(ExternalDataStorageType& externalDataStorage,
Message *&message) = 0;

virtual ~MessageHandlerIf() {}
};


/**
* Interface implemenation for message handler having two parameters:
* - external data storage
* - message
*/
template <typename MESSAGE_RECEIVER_TYPE,
typename EXTERNAL_DATA_STORAGE_TYPE,
typename MESSAGE_TYPE >
class MessageHandler :
public MessageHandlerIf<EXTERNAL_DATA_STORAGE_TYPE, MESSAGE_TYPE> {

typedef MESSAGE_RECEIVER_TYPE MessageReceiverType;
typedef MESSAGE_TYPE Message;

public:
typedef EXTERNAL_DATA_STORAGE_TYPE ExternalDataStorageType;
typedef void (MessageReceiverType::* MessageHandlerPtr)(ExternalDataStorageType &,
Message *&);

MessageHandler(MessageReceiverType& messageReceiver,
MessageHandlerPtr messageHandler) :
messageReceiver(messageReceiver),
messageHandler(messageHandler) {
}

void handleMessage(ExternalDataStorageType& externalDataStorage,
Message *&message) {

(messageReceiver.*(messageHandler))(externalDataStorage,
message);
}

private:
MessageReceiverType& messageReceiver;
MessageHandlerPtr messageHandler;
};

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
#endif
I don't mind if you r FAT.
I don't mind if you r UGLY.
I don't mind if you ACT CUTE.
But I can't STAND if you r FAT, UGLY and still ACT CUTE.

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录