在这里插入代码片
一、问题的引入
目前工程的结构如图所示:
IProjectManager
管理工程的创建,这个时候如果我想监听工程的打开关闭应该怎么架构
二、如何实现
添加IProjectEventManager
结构去管理工程的创建的监听,需要监听的只需地方,只需继承于IProjectEvent
在打开工程前 初始化监听类到ProjectEventManager
中,当然 所有的manager
都是单例类
bool CProjectEventManagerImpl::AddProjectEventHandle(IProjectEvent* pEventHandle)
{
if (NULL == pEventHandle)
return false;
// 查找当前是否已存在当前通知
ProjectEventArrayIter findIter = std::find(_projectEventArray.begin(), _projectEventArray.end(), pEventHandle);
if (findIter != _projectEventArray.end())
return false;
_projectEventArray.push_back(pEventHandle);
return true;
}
当真正走到打开工程时 通知各个监听类刷新
// 通知工程即将打开
ProjectEventManager()->OnProjectOpened(this);
void CProjectEventManagerImpl::OnProjectOpened(IProject* pProject)
{
if (IsDisbaleEvent(pProject))
return;
size_t nEventCount = _projectEventArray.size();
for (size_t i = 0; i < nEventCount; ++i)
{
_projectEventArray[i]->OnProjectOpened(pProject);
}
}