蜗牛的家
男儿当自强
posts - 48,  comments - 21,  trackbacks - 0
意图:
为其他对象提供一种代理以控制对这个对象的访问
UML图:

解析:
某个对象知道它真正被使用的时候才被初始化,在没有用到的时候就暂时用Proxy作为占位符,
适用:
在需要用比较通用和复杂的对象指针代替简单的指针的时候,适用Proxy模式,如:
远程代理,为一个对象在不同的地址空间提供局部代表,
虚代理,根据需要创建开销很大的对象
保护代理,控制对原始对象的访问,保护代理用于对象应该有不同的访问权限
智能指针取代了简单的指针,它在访问对象时执行一些附加操作
对指向实际对象的引用计数,这样当该对象没有引用时,可以自动释放
当第一次引用一个持久对象时,将他装入内存
在访问一个实际对象钱,检查是否已经锁定了它,以确保其他对象不能改变它
//test.h
//////////////////////////////////////////////////////////////////////////
//定义了基类与公共接口
class Subject
{
public:
    Subject(){}
    virtual ~Subject(){}
    
    virtual void Request() = 0;
};

class RealSubject : public Subject
{
public:
    RealSubject();
    virtual ~RealSubject(){}

    virtual void Request();
};

class Proxy : public Subject
{
public:
    Proxy();
    virtual ~Proxy();

    virtual void Request();
private:
    RealSubject* m_pRealSubject;
};


// test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include 
<iostream>
#include "test.h"

using namespace std;
//////////////////////////////////////////////////////////////////////////
RealSubject::RealSubject()
{
    cout 
<< "Constructing of RealSubject\n";
}
void RealSubject::Request()
{
    cout << "Request by RealSubject\n";
}

Proxy::Proxy() : m_pRealSubject(NULL)
{
    cout << "Constructing a proxy\n";
}

Proxy::~Proxy()
{
    delete m_pRealSubject;
    m_pRealSubject 
= NULL;
}

void Proxy::Request()
{
    if (NULL 
== m_pRealSubject)
    {
        cout << "Request by Proxy\n";
        m_pRealSubject 
= new RealSubject;
    }
    m_pRealSubject-
>Request();
}
//////////////////////////////////////////////////////////////////////////
int main(int argc, char* argv[])
{
    Subject* pProxy = new Proxy;
    pProxy->Request();
    
    delete pProxy;
    
    system("pause");
    return 0;
}
posted on 2008-08-19 22:23 黑色天使 阅读(520) 评论(0)  编辑 收藏 引用 所属分类: 设计模式

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2008年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(2)

随笔分类

随笔档案

文章档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜