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网页时,里面可能有很多的文字和图片,但是仍然可以打开它,但是看到的只是汉字,图片却是一张一张的下载的得到的,这里未打开的图片框就是通过虚拟代理替代了真实的图片,此时代理储存了真实图片的路径和尺寸。)
    第三,安全代理,用来控制真实对象时的权限,一般用于对象应该有不同的访问权限的时候。
    第四,智能指引,当调用真实的对象的时候,代理处理另外的一些事。

  • 相关阅读:
    luogu P1768 天路
    [NOIP2008]双栈排序
    逆元板子集
    [NOIP2015]子串
    [USACO17JAN]Subsequence Reversal
    [NOIP2011] 聪明的质监员
    POJ2987 Firing
    2018.10.20模拟总结
    POJ3469 Dual Core CPU
    真实道路中,如何倒车、侧方停车 哪里是圆心就往哪边大方向 倒车实际是以圆心 画圆后轮进库看左右镜子 别剐蹭
  • 原文地址:https://www.cnblogs.com/pzqu/p/9457648.html
Copyright © 2011-2022 走看看