代理模式(大话设计模式)C/C++版本

代理模式

C++

cpp 复制代码
#include <iostream>
using namespace std;

class Subject // Subject 定义了RealSubject和Proxy的共用接口..这样就在任何使用RealSubject的地方都可以使用Proxy
{
public:
    virtual void func()
    {
        cout << "Subject" << endl;
    }
};

class RealSubject : public Subject // RealSubject  定义proxy所代表的真实实体
{
public:
    virtual void func()
    {
        cout << "RealSubject" << endl;
    }
};

class Proxy : public Subject // proxy 保存一个引用使得代理可以访问实体,并且提供一个于Subject的接口相同的接口 这样代理就可以用来替代实体
{
    RealSubject real;

public:
    virtual void func()
    {
        cout << "Proxy" << endl;
        real.func();
    }
};

int main()
{
    Proxy proxy;
    proxy.func();
    return 0;
}

C

c 复制代码
#include <stdio.h>

typedef void (*FuncPtr)(void);

typedef struct
{
    FuncPtr func;
} Subject;

typedef struct
{
    Subject subject;
} RealSubject;

void RealSubject_init(RealSubject *self);
void RealSubject_func(void);

typedef struct
{
    Subject subject;
    RealSubject real;
} Proxy;

void Proxy_init(Proxy *self);
void Proxy_func(Proxy *self);

int main()
{
    Proxy proxy;
    Proxy_init(&proxy);
    proxy.subject.func();
    return 0;
}

void RealSubject_init(RealSubject *self)
{
    self->subject.func = RealSubject_func;
}

void RealSubject_func(void)
{
    printf("RealSubject\n");
}

void Proxy_init(Proxy *self)
{
    RealSubject_init(&self->real);
    self->subject.func = (FuncPtr)Proxy_func;
}

void Proxy_func(Proxy *self)
{
    printf("Proxy\n");
    self->real.subject.func();
}
相关推荐
VekiSon1 小时前
Linux内核驱动——杂项设备驱动与内核模块编译
linux·c语言·arm开发·嵌入式硬件
2的n次方_1 小时前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构
_F_y2 小时前
C语言重点知识总结(含KMP详细讲解)
c语言·开发语言
郝学胜-神的一滴3 小时前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip
island13144 小时前
CANN GE(图引擎)深度解析:计算图优化管线、内存静态规划与异构 Stream 调度机制
c语言·开发语言·神经网络
苏渡苇4 小时前
优雅应对异常,从“try-catch堆砌”到“设计驱动”
java·后端·设计模式·学习方法·责任链模式
短剑重铸之日5 小时前
《设计模式》第十一篇:总结
java·后端·设计模式·总结
Once_day5 小时前
C++之《程序员自我修养》读书总结(1)
c语言·开发语言·c++·程序员自我修养
feasibility.5 小时前
AI 编程助手进阶指南:从 Claude Code 到 OpenCode 的工程化经验总结
人工智能·经验分享·设计模式·自动化·agi·skills·opencode