代理模式:为其他对象提供一种代理控制对这个对象的访问,只有在我们确实需要这个对象时才对它进行创建和访问。
代理分类:
远程代理:为一个在不同地址空间提供局部代表。
虚代理:根据需要创建很大的对象。
保护代理:控制对原始对象的访问。
智能代理:取代了指针,它在访问对象时执行了一些附加操作如引用计数。
代理对象和被代理的对象,继承相同的接口,这样代理就可以用来代替实体。代理可以控制实际对象的创建和调用。
#include <stdio.h>
//买书
class SellBook {
public:
virtual void sell() = 0;
};
class Author :public SellBook {
public:
void sell()override{
printf("作者在卖书!\n");
}
};
class BookShop :public SellBook {
public:
BookShop(Author* author) {
_author = author;
}
void sell() {
printf("书店卖书!实际上");
_author->sell();
}
private:
Author* _author;
};
int main() {
Author* author = new Author;
BookShop* bookShop = new BookShop(author);
bookShop->sell();
return 0;
}
运行结果: