[c设计模式]代理模式 (from chatgpt)

以下是一个简单的 C 语言代理模式示例:

#include 

// 真实主题(Real Subject)
typedef struct {
    int value;
} RealSubject;

void RealSubject_init(RealSubject *self) {
    self->value = 0;
}

void RealSubject_setValue(RealSubject *self, int value) {
    self->value = value;
}

int RealSubject_getValue(RealSubject *self) {
    return self->value;
}

// 代理(Proxy)
typedef struct {
    RealSubject real_subject;
} Proxy;

void Proxy_init(Proxy *self) {
    RealSubject_init(&self->real_subject);
}

void Proxy_setValue(Proxy *self, int value) {
    RealSubject_setValue(&self->real_subject, value);
}

int Proxy_getValue(Proxy *self) {
    return RealSubject_getValue(&self->real_subject);
}

int main() {
    Proxy proxy;

    Proxy_init(&proxy);
    Proxy_setValue(&proxy, 42);
    printf("Value: %d
", Proxy_getValue(&proxy));

    return 0;
}

在上面的示例中,我们有一个真实主题 RealSubject,它有一个整数值,可以设置和获取。我们还有一个代理 Proxy,它包装了真实主题,提供相同的设置和获取方法。

当我们对代理调用 setValue 时,代理将调用真实主题的 setValue 方法。当我们对代理调用 getValue 时,代理将调用真实主题的 getValue 方法,并返回该方法的结果。

在这个示例中,代理模式的好处在于我们可以在不修改真实主题的代码的情况下,通过代理来控制对真实主题的访问。例如,我们可以在代理中添加一些验证或日志记录,而不必修改真实主题的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值