zoukankan      html  css  js  c++  java
  • Proxy 模式

    在以下集中情况下可以用 Proxy模式解决问题:
    1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,GoF 称之为虚代理(Virtual Proxy);

    2)为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(网络性能不好的时候,问题尤其突出) ,我们将这个操纵的过程交给一个代理去完成,GoF 称

    之为远程代理(Remote Proxy);

    3)对对象进行控制访问的时候,比如在 Jive 论坛中不同权限的用户(如管理员、普通用户等)将获得不同层次的操作权限,我们将这个工作交给一个代理去完成,GoF 称之为保

    护代理(Protection Proxy)。

    4)智能指针(Smart Pointer)。

     1 ////////////////////Proxy.h//////////////////////////////////////////////////////
     2 #pragma once
     3 class Subject
     4 {
     5 public:
     6     virtual ~Subject() ;
     7     virtual void Request() = 0 ;
     8 protected:
     9     Subject();
    10 private:
    11 };
    12 
    13 class ConcreteSubject : public Subject
    14 {
    15 public:
    16     ~ConcreteSubject();
    17     ConcreteSubject();
    18     void Request();
    19 protected:
    20 private:
    21 };
    22 class Proxy 
    23 {
    24 public:
    25     Proxy();
    26     Proxy(Subject* sub);
    27     ~Proxy();
    28     void Request();
    29 protected:
    30 private:
    31     Subject* _sub ;
    32 };
     1 ///////////////Proxy.cpp///////////////////////////////////////////////////////////
     2 #include "Proxy.h"
     3 #include <iostream>
     4 using namespace std;
     5 Subject::~Subject()
     6 {
     7 
     8 }
     9 Subject::Subject()
    10 {
    11 
    12 }
    13 ConcreteSubject::ConcreteSubject()
    14 {
    15 
    16 }
    17 ConcreteSubject::~ConcreteSubject()
    18 {
    19 
    20 }
    21 void ConcreteSubject::Request()
    22 {
    23     cout<<"ConcreteSubject......request...."<<endl; 
    24 }
    25 
    26 Proxy::Proxy()
    27 {
    28 
    29 }
    30 Proxy::Proxy(Subject* sub)
    31 {
    32     this->_sub = sub ;
    33 }
    34 
    35 Proxy::~Proxy()
    36 {
    37     delete _sub ;
    38 }
    39 
    40 void Proxy::Request()
    41 {
    42     cout<<"Proxy request...."<<endl;
    43     _sub->Request();
    44 }
     1 /////////////main.cpp/////////////////////////////////////////////////////////////
     2 #include "Proxy.h"
     3 #include <iostream>
     4 int main()
     5 {
     6     Subject* sub = new ConcreteSubject();
     7     Proxy* p = new Proxy(sub);
     8     p->Request();
     9     getchar();
    10     return 0;
    11 
    12 }
  • 相关阅读:
    Python基础语法—8小时入门版
    PXE服务搭建及配置
    jenkins pipeline
    Bugzilla的安装和部署
    KVM安装、配置及使用说明
    UOS虚拟显示器&VNC配置
    Sikuli-基于图像识别的自动化测试框架
    UOS(国产Linux操作系统)下使用pytest生成allure自动化测试报告
    dogtail的使用方法(二)——元素操作
    dogtail的使用方法(三)——启动应用
  • 原文地址:https://www.cnblogs.com/csxcode/p/3727463.html
Copyright © 2011-2022 走看看