看我写的,让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.