设计模式之代理模式

UML类图:
在这里插入图片描述

核心思想:

#include<iostream>
using namespace std;

// 1. Subject类中定义RealSubject类和Proxy类的公共接口
class Subject
{
public:
	virtual void func1() = 0;
};

//2. 然后分别在RealSubject类和Proxy类中去实现这些接口 
class RealSubject :Subject
{
public:
	void func1()override
	{
		cout << "执行func1" << endl;
	}
};

class Proxy :Subject
{
	RealSubject realSubject;

public:
	void func1()override
	{
		realSubject.func1();
	}
};

int main()
{
	Proxy proxy;
	//表面上调用的是Proxy类中的func1,实际上调用的是RealSubject类中的func1,实现了代理
	//由此可见,只要是想通过代理来执行某个实例的函数,只需要在Subject类中定义相应的接口,然后在具体类RealSubject和代理类Proxy中去实现相应的接口,就可以通过代理去执行相应的函数。
	proxy.func1();
	return 0;
}

优点:

  • 职责清晰
    具体的类就是实现实际的业务逻辑,不用关心其他非本职责的事务,甚至都不需要创建相应的对象来调用类中接口,只需要通过后期的代理完成一件事务,附带的结果就是编程简洁清晰。
  • 高扩展性
    具体主题角色是随时都会发生变化的,只要它实现了接口,甭管它如何变化,那我们的代理类完全都可以在不做任何修改的情况下使用。
  • 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。

使用场景:

我相信第一次接触到代理模式的读者肯定很郁闷,为什么要用代理呀?想想现实世界吧,打官司为什么要找个律师?因为你不想参与中间过程的是是非非,只要完成自己的答辩就成,其他的比如事前调查、事后追查都由律师来搞定,这就是为了减轻你的负担。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子非鱼Swx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值