一个很酷的事件处理简单模型
2013-01-12 22:36
357 查看
表示是原创啊,但是是在总结了各路大婶知识的基础上:
#include <iostream>
#include <memory>
using namespace std;
class AbstractEvent
{
public:
virtual char* Event(char* apMsg)=0;
};
class AbstractMsgHandler
{
public:
virtual void Handler(char* apAnswer)=0;
};
class MsgSender
{
public:
MsgSender(AbstractEvent* apSubscribeEvent,AbstractMsgHandler* apMsgHandler):
m_pSubscribeEvent(apSubscribeEvent),m_pMsgHandler(apMsgHandler)
{
}
void SendMsg(char* apMsg)
{
char* lpAnswer = m_pSubscribeEvent->Event(apMsg);
m_pMsgHandler->Handler(lpAnswer);
}
private:
AbstractEvent* m_pSubscribeEvent;
AbstractMsgHandler* m_pMsgHandler;
};
class ConcreteEvent:public AbstractEvent
{
public:
char* Event(char* apMsg)
{
return apMsg;
}
};
class ConcreteMsgHandler:public AbstractMsgHandler
{
void Handler(char* apAnswer)
{
std::cout << apAnswer << std::endl;
}
};
int main()
{
std::auto_ptr<AbstractEvent> lpAbstractEvent(new ConcreteEvent());
std::auto_ptr<AbstractMsgHandler> lpAbstractMsgHandler(new ConcreteMsgHandler());
std::auto_ptr<MsgSender> lpMsgSender(new MsgSender(lpAbstractEvent.get(),lpAbstractMsgHandler.get()));
char* lpMsg = "123";
lpMsgSender->SendMsg(lpMsg);
return 0;
}
欢迎大家提建议。
#include <iostream>
#include <memory>
using namespace std;
class AbstractEvent
{
public:
virtual char* Event(char* apMsg)=0;
};
class AbstractMsgHandler
{
public:
virtual void Handler(char* apAnswer)=0;
};
class MsgSender
{
public:
MsgSender(AbstractEvent* apSubscribeEvent,AbstractMsgHandler* apMsgHandler):
m_pSubscribeEvent(apSubscribeEvent),m_pMsgHandler(apMsgHandler)
{
}
void SendMsg(char* apMsg)
{
char* lpAnswer = m_pSubscribeEvent->Event(apMsg);
m_pMsgHandler->Handler(lpAnswer);
}
private:
AbstractEvent* m_pSubscribeEvent;
AbstractMsgHandler* m_pMsgHandler;
};
class ConcreteEvent:public AbstractEvent
{
public:
char* Event(char* apMsg)
{
return apMsg;
}
};
class ConcreteMsgHandler:public AbstractMsgHandler
{
void Handler(char* apAnswer)
{
std::cout << apAnswer << std::endl;
}
};
int main()
{
std::auto_ptr<AbstractEvent> lpAbstractEvent(new ConcreteEvent());
std::auto_ptr<AbstractMsgHandler> lpAbstractMsgHandler(new ConcreteMsgHandler());
std::auto_ptr<MsgSender> lpMsgSender(new MsgSender(lpAbstractEvent.get(),lpAbstractMsgHandler.get()));
char* lpMsg = "123";
lpMsgSender->SendMsg(lpMsg);
return 0;
}
欢迎大家提建议。
相关文章推荐
- 一个简单的c++/cli中委托与事件的处理模型
- Kibo是一个简单的用于处理键盘事件的Javascript工具库。
- (4)事件处理——(8)一个简单的风格切换器(A simple style switcher)
- SAX是一个用于处理XML事件驱动的“推”模型
- 使用事件处理创建一个简单的绘图实例程序 python
- 一个简单的自定义控件的事件处理示例 [IPostBackEventHandler]
- (4)事件处理——(8)一个简单的风格切换器(A simple style switcher)
- 一个简单的事件处理程序
- Linux Socket 事件触发模型 epoll 示例 这里会写一个用C语言的TCP服务器的完全实现的简单程序
- iOS开发UI篇—事件处理(实现一个简单的涂鸦板)
- C#事件演示程序1)——一个最简单的C#事件处理程序
- 一个简单的记事本-----熟悉JFrame、j组件、事件处理机制(监听机制)、BufferedReader/BufferedWriter 、文件选择器组件JFileChooser
- iOS开发UI篇―事件处理(实现一个简单的涂鸦板)
- 一个简单的混音播放器,处理中断
- Java自学005事件处理模型
- 手动添加一个事件处理
- 一个简单的 Java 自动批处理队列
- 一个简单的跨域跨数据库事务处理架构
- 一个简单例子:贫血模型or领域模型
- js学习笔记之事件处理模型