zoukankan      html  css  js  c++  java
  • 代理模式(Proxy)

    概念:代理本身不具有功能,为其他对象提供一种代理以控制对这个对象的访问
    概括:代理模式就是在访问对象的时候引入了一些间接性,因为这些间接性,可以附加多种用途。
    C++代码实现:


    
    #include <iostream>
    using namespace std;
    class Base{
        public:
            virtual void fun()=0;
    };
    class Derived:public Base{
        public:
    /*这里才是真正的实现*/
            virtual void fun()
            {
                cout<<"get"<<endl;
            }
    };
    class Proxy:public Base{
        private:
    /*必须基类指针,为了实现多态,指向真正具有功能的对象*/
            Base *p;
        public:
            Proxy(Base *t):Base()
            {
                p=t;
            }
           /*类间通信*/
            void fun()
            {
                p->fun();
            }
    
    };
    int main(void)
    {
        Base *d=new Derived();
        Base *p=new Proxy(d);
        p->fun();
        delete d;
        delete p;
        return 0;
    }

    代理模式一般分为三种,第一,远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。
    第二,虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象。(比如说浏览器中打开一个很大的HTML网页时,里面可能有很多的文字和图片,但是仍然可以打开它,但是看到的只是汉字,图片却是一张一张的下载的得到的,这里未打开的图片框就是通过虚拟代理替代了真实的图片,此时代理储存了真实图片的路径和尺寸。)
    第三,安全代理,用来控制真实对象时的权限,一般用于对象应该有不同的访问权限的时候。
    第四,智能指引,当调用真实的对象的时候,代理处理另外的一些事。

  • 相关阅读:
    uva 11294 Wedding
    uvalive 4452 The Ministers’ Major Mess
    uvalive 3211 Now Or Later
    uvalive 3713 Astronauts
    uvalive 4288 Cat Vs. Dog
    uvalive 3276 The Great Wall Game
    uva 1411 Ants
    uva 11383 Golden Tiger Claw
    uva 11419 SAM I AM
    uvalive 3415 Guardian Of Decency
  • 原文地址:https://www.cnblogs.com/pzqu/p/9457648.html
Copyright © 2011-2022 走看看