#include <iostream>
#include <string>
using namespace std;
class Operation
{
public:
virtual void operation() = 0;
};
class Work
{
public:
Work() {}
Work(string strName) : m_strName(strName) {}
void setWorkName(string strName) { m_strName = strName; }
string getWorkName() { return m_strName; }
private:
string m_strName;
};
class Lazy : public Operation
{
public:
Lazy() {}
Lazy(Work* pobjWork) : m_pobjWork(pobjWork) {}
virtual void operation() override
{
if (m_pobjWork)
{
cout << "do not work " << m_pobjWork->getWorkName() << endl;
}
}
private:
Work* m_pobjWork = nullptr;
};
class Industrious : public Operation
{
public:
Industrious() {}
Industrious(Work* pobjWork) { m_pobjLazy = new Lazy(pobjWork); }
virtual void operation() override
{
if (m_pobjLazy)
{
m_pobjLazy->operation();
}
}
private:
Lazy* m_pobjLazy = nullptr;
};
int main()
{
Work* pobjWork = new Work("knock");
Industrious* pobjIndustrious = new Industrious(pobjWork);
pobjIndustrious->operation();
return 0;
}
总结:可以控制其他类进行操作
代理模式
最新推荐文章于 2023-01-02 20:26:38 发布