代理模式

定义

   为其它对象提供一种代理以控制对这个对象的访问

主要解决

   在直接访问对象时带来的问题,比如:要访问的对象在远程服务器上。在面向对象系统中,有些对象由于某些原因,直接访问会给使用者或系统带来很多麻烦,可以在访问此对象时加上一个对此对象的访问层。

如何解决

   增加中间代理层

关键代码

   实现与被代理类组合

class Gril  
{  
public:  
    Gril(string name = "gril"):m_string(name){}  
    string getName()  
    {  
        return m_string;  
    }  
private:  
    string m_string;  
};  
  
class Profession  
{  
public:  
    virtual ~Profession(){}  
    virtual void profess() = 0;  
};  
  
class YoungMan:public Profession  
{  
public:  
    YoungMan(Gril gril):m_gril(gril){}  
    void profess()  
    {  
        cout << "Young man love " << m_gril.getName().data() << endl;  
    }  
private:  
    Gril m_gril;  
};  
  
class ManProxy:public Profession  
{  
public:  
    ManProxy(Gril gril):m_man(new YoungMan(gril)){}  
    void profess()  
    {  
        cout << "I am Proxy" << endl;  
        m_man->profess();  
    }  
private:  
    YoungMan* m_man;  
};  
  
int main(int argc, char *argv[])  
{  
    Gril gril("hei");  
    Profession* proxy = new ManProxy(gril);  
    proxy->profess();  
    delete proxy;  
    return 0;  
}  

猜你喜欢

转载自blog.csdn.net/lengyuezuixue/article/details/80092230