结构型 代理模式

简介: 结构型 代理模式

代理模式(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;
}
目录
相关文章
|
6月前
结构型 装饰器模式
结构型 装饰器模式
32 0
|
28天前
|
设计模式 缓存 C#
C# 一分钟浅谈:装饰者模式与代理模式
【10月更文挑战第12天】本文介绍了面向对象编程中的两种常见设计模式:装饰者模式和代理模式。装饰者模式允许在运行时动态地给对象添加功能,而代理模式则通过代理对象控制对另一个对象的访问。文章详细讲解了这两种模式的概念、常见问题、如何避免问题以及代码示例,帮助读者更好地理解和应用这些设计模式。
36 13
|
4月前
|
设计模式
对于装饰器模式与代理模式的个人理解
摘要: 代理模式与装饰器模式虽相似,但目的不同。装饰器动态增强对象功能,如添加新特性,而不改变原有类。代理模式则用于控制访问,如优化昂贵操作或添加辅助服务(如日志),它可能在内部初始化原对象。用法上,装饰器由外部决定是否应用,允许链式创建,而代理通常内部调用,外部直接与代理交互,被代理对象可能独立不可用。
|
5月前
|
设计模式 编解码 网络安全
结构型设计模式之代理模式
结构型设计模式之代理模式
|
5月前
|
设计模式 架构师 安全
设计模式第五讲-装饰器模式和代理模式详解
远程代理,这种方式通常是为了隐藏目标对象存在于不同地址空间的事实,方便客户端访问。例如,用户申请某些网盘空间时,会在用户的文件系统中建立一个虚拟的硬盘,用户访问虚拟硬盘时实际访问的是网盘空间。
264 0
|
设计模式 监控 安全
结构型设计模式02-代理模式
结构型设计模式02-代理模式
37 0
|
设计模式 缓存 安全
设计模式-结构型模式:代理模式
设计模式-结构型模式:代理模式
|
Arthas Java 测试技术
结构型模式-代理模式
结构型模式-代理模式
70 0
|
SQL XML Java
设计模式 - 结构型模式_代理模式
代理模式有点像⽼⼤和⼩弟,也有点像分销商。主要解决的是问题是为某些资源的访问、对象的类的易⽤操作上提供⽅便使⽤的代理服务。⽽这种设计思想的模式经常会出现在我们的系统中,或者你⽤到过的组件中,它们都提供给你⼀种⾮常简单易⽤的⽅式控制原本你需要编写很多代码的进⾏使⽤
94 0
设计模式 - 结构型模式_代理模式
|
设计模式 数据安全/隐私保护
GOF设计模式之代理模式(结构型代理模式)
GOF设计模式之代理模式(结构型代理模式)
GOF设计模式之代理模式(结构型代理模式)