class IProgress
{
public:
virtual void DoProgress() = 0;
virtual ~IProgress(){}
};
class FileSplitter
{
std::string m_filePath;
int m_fileNumber;
//IProgress* m_IProgress;
std::list<IProgress*> m_IProgressList;
public:
FileSplitter(const std::string& filePath,int fileNumber):
m_filePath(m_filePath)
m_fileNumber(m_fileNumber)
void split()
{
for(size_t i = 0; i < m_fileNumber; ++i)
if (m_progressBar != nullptr)
{
onProgress();
}
}
void addProgress(IProgress* IProgress)
{
m_IProgressList.push_back(IProgress);
}
void removeProgress(IProgress* IProgress)
{
m_IProgressList.remove(IProgress);
}
private:
virtual void onProgress()
{
for (auto& e : m_IProgressList)
{
e.DoProgress()->setVaule(i);
}
}
};
class MainFrom :public Form : IProgress
{
TextBox* txtFilePath;
TexBox* txtFileNumber;
public:
void Button1_Click()
{
std::string filePath = txtFilePath->getTex();
int number = atoi(txtFileNumber->getTxt().c_str());
FileSplitter splitter(filePath, number, this);
splitter.split();
}
};
c++ 设计模式 观察者模式
最新推荐文章于 2024-07-18 17:40:16 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)