4.代理模式
2020-11-25 本文已影响0人
celusing
1.代理模式
![](https://img.haomeiwen.com/i12562142/7172ca43db6d356f.png)
- 角色:
- Subject:抽象主题,定义业务类型的接口
- RealSubject:具体实现类。也被称为:委托角色或者代理角色。业务逻辑的具体执行者。
- Proxy:代理类。
- 实现
class Subject
{
public:
virtual ~Subject()=0;
virtual void Request()=0;//具体代理的任务
protected:
Subject();
};
class ConcreteSubject:public Subject
{
public:
ConcreteSubject();
~ConcreteSubject();
void Request();
};
class Proxy:public Subject
{
public:
Proxy();
Proxy(Subject* _sub);
void Request()//实现对委托者的委托任务执行与补偿
{
bef();
this->_sub->Request();
end();
}
void bef()
{}
void end()
{}
~Proxy();
private:
Subject* _sub;
};
2.动态代理
定义:实现阶段不用关系代理谁,而是在运行阶段指定代理哪一个对象。AOP核心:动态代理。
![](https://img.haomeiwen.com/i12562142/5ccc161bde2c33a0.png)