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 }
  • 相关阅读:
    Spring基础知识
    Hibernate基础知识
    Struts2基础知识
    在eclipse里头用checkstyle检查项目出现 File contains tab characters (this is the first instance)原因
    java后台获取cookie里面值得方法
    ckplayer 中的style.swf 中的 style.xml 中的修改方法
    java hql case when 的用法
    Windows下Mongodb安装及配置
    Mongodb中经常出现的错误(汇总)child process failed, exited with error number
    Mac 安装mongodb
  • 原文地址:https://www.cnblogs.com/csxcode/p/3727463.html
Copyright © 2011-2022 走看看