结构型 代理模式

简介: 结构型 代理模式

代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。 (不能改变对象接口)

代理模式

在不修改客户代码的前提下,对已有的类的对象上增加行为时使用。

使用场景:

远程代理:为一个对象的地址空间提供局部代表。    ==》通过代理,实际是做远程通信
虚拟代理:根据需要来创建开销较大的对象。     ==》对开销大的对象做封装,真正使用时做整整委托调用
保护代理:用于对象应该具有不同访问权限的场景,控制对原始对象的访问。
智能指引:取代简单的指针,它在访问对象时执行一些附加操作。
-- 引自《设计模式:可复用面向对象软件的基础》

源码demo:

其实就是提供一个中间类或者接口,对要操作的目标类对象进行封装。

/************************************************
代理模式:
    1.定义代理接口
    2.代理类和被代理类去实现相同的接口
    3.在代理类中创建被代理的类,在接口中去调用被代理类的接口
使用:
    1.创建代理对象,在代理对象中实现了调用被代理类的接口
      从而看起来好像是调用的同一个接口,但是实际执行的是被代理类的函数
*************************************************/
#include <iostream>
#include <string>
using namespace std;
class Interface
{
public:
    virtual void Request() = 0;
    virtual ~Interface(){}
};
//目标实际类的定义
class RealClass : public Interface
{
public:
    virtual void Request()
    {
        cout << "真实的请求" << endl;
    }
};
//不用这个基类也可以的 这是代理类的实现
//通过代理类对目标类对象进行操作  看起来操作这个类,实际控制目标类对象
class ProxyClass : public Interface
{
private:
    RealClass* m_realClass;
public:
    virtual void Request()
    {
        m_realClass = new RealClass();
        m_realClass->Request();
        delete m_realClass;
    }
};
int main()
{
    ProxyClass* test = new ProxyClass();
    test->Request();
    return 0;
}
目录
相关文章
|
Kubernetes 负载均衡 算法
在k8S中,Service分发后端的策略是什么?
在k8S中,Service分发后端的策略是什么?
编译原理----0型,1型,2型,3型文法
编译原理----0型,1型,2型,3型文法
402 1
|
数据库 数据安全/隐私保护 开发者
Odoo 15开发手册第一章 使用开发者模式快速入门
Odoo提供了一个快速应用开发框架,尤其适合构建商业应用。这类应用通常用于保存业务记录和工作流。Odoo 不仅简化了这类应用的构建,还提供了看板、日历、图表等视图的丰富组件,用于创建难以抗拒的用户界面。
1055 3
Odoo 15开发手册第一章 使用开发者模式快速入门
|
Java Maven Spring
IntelliJ IDEA - 如何查看 Maven 项目中所有 Jar 包的依赖关系图?
IntelliJ IDEA - 如何查看 Maven 项目中所有 Jar 包的依赖关系图?
443 0
IntelliJ IDEA - 如何查看 Maven 项目中所有 Jar 包的依赖关系图?
|
应用服务中间件 Linux 网络安全
一个ip, 两个域名, 两个ssl, 访问多个不同的项目
在前面一篇中说过, 入了好几个坑. 后来使用了nginx+tomcat配置的方式. 终于成功了. 因为头一次使用nginx, 不知道具体怎么操作, 于是我在操作的时候, 按照以下几个步骤执行的:
609 0
一个ip, 两个域名, 两个ssl, 访问多个不同的项目
|
对象存储 开发者
|
消息中间件 Java 微服务
消息队列面试解析系列(六)- 异步编程妙用(下)
消息队列面试解析系列(六)- 异步编程妙用
212 0
|
Serverless Linux Docker
开发函数计算的正确姿势——使用交互模式安装依赖
前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。
12331 0
|
Linux 网络安全 安全
记一次Centos7.5升级SpenSSH8.0p1
前因:服务器被扫描到有SpenSSH漏洞,所以需要升级版本修复漏洞。 服务器版本: # cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 升级前ssh版本: # ssh -V OpenSSH_7.
4572 0