furnace:
考。。。都是你这种人,写这样的代码,class里面放class,template.让那种自动生成uml的程序,用不了,害得我自己画
[阅读: 553] 2005-07-07 10:01:49
看我写的,让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