现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

代码版设计模式13:代理模式【结构型】

2013-03-02 12:15 工业·编程 ⁄ 共 829字 ⁄ 字号 暂无评论

代理模式,对象适配器模式的区别:

适配器模式:适配者与被适配者接口不同,为了是用户使用同一的接口。

   代理模式:代理者与被代理者接口相同,只是客户不能访问到被代理者。

#include <iostream>
using namespace std;

//
struct IImage
{
public:
    IImage(string name) : m_name(name) { }
    virtual ~IImage() { }

    virtual void Show() = 0;

protected:
    string m_name;
};

class CBigImage : public IImage
{
public:
    CBigImage(string name) : IImage(name) { }
    virtual ~CBigImage() { }

    virtual void Show() { cout<<m_name.c_str()<<endl; }
};

class CBigImageProxy : public IImage
{
public:
    CBigImageProxy(string name) : IImage(name)
    {
        m_pBigImage = new CBigImage(m_name);
    }
    virtual ~CBigImageProxy()
    {
        if(m_pBigImage)
        {
            delete m_pBigImage;
            m_pBigImage = NULL;
        }
    }

    virtual void Show()
    {
        m_pBigImage->Show();
    }

private:
    CBigImage *m_pBigImage;
};

//
void main()
{
    CBigImageProxy bigImageProxy("Big Image.");
    bigImageProxy.Show();
}

给我留言

留言无头像?