C++实现代理模式

概述:

代理模式是一种结构型模式,在某些情况下,一个对象不适合或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用

优点:

  1. 代理模式能够将客户与真正被调用的对象分离,降低了耦合度

  2. 客户端可以通过代理与多个目标对象交互,目标对象的修改和扩展客户端并不感知,扩展性和维护性强

缺点:

  1. 在客户端和真正目标对象之间增加代理对象,请求速度有可能会变慢

  2. 增加代理会使系统复杂度变高

使用场景:

  1. 代理服务器,通过代理服务器访问无法访问的服务器

  2. 可以在代理服务器实现负载均衡、数据缓存

UML类图:

代理模式

实例:

#include <iostream>
// 出租方
class Lessor{
public:
       virtual void rentHouse()=0;
};
// 房东
class LandLord : public Lessor{
public:
       virtual void rentHouse(){
              std::cout << "房东出租房子" << std::endl;
       }
};
// 中介
class HouseProxy : public Lessor{
public:
       virtual void rentHouse(){
              std::cout << "中介找房东租房子" << std::endl;
              landlord.rentHouse();
       }
private:
       LandLord landlord;
};

//租客
class Renter{
public:
       void findHouse(){
              std::cout << "租客找中介租房子" << std::endl;
              lessor.rentHouse();
       }
private:
       HouseProxy lessor;
};
int main(){
       Renter renter;
       renter.findHouse();
       return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值