#include<iostream>
class image {
public:
virtual void display() = 0;
};
//实际类
class RealImage : image{
std::string fileName;
public:
RealImage(std::string s) {
fileName = s;
LoadFromDisk();
}
void display() override{
std::cout << "displaying \n";
}
void LoadFromDisk() {
std::cout <<" load : "<< fileName<<"\n";
}
};
//代理类
class ProxyImage :public image{
RealImage* realImage;
std::string fileName;
public:
//接受文件名字
ProxyImage(std::string s) {
fileName = s;
}
//通过实际类来刷新文件
void display() override{
if (realImage == nullptr) {
realImage = new RealImage(fileName);
}
realImage->display();
}
};
int main()
{
//传入需要的数据
image* proxyImage = new ProxyImage("vidio");
//刷新 实际实现细节由实际类来执行
proxyImage->display();
proxyImage->display();
system("pause");
return 0;
}
设计模式之代理模式
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 代理模式又细分为动态代理、静态代理、远程代理等等。举个生活中的例子进行类比,代理模式类似与现在流行的代购,客户想获...
- 今天给大家分享的是java设计模式之代理模式中的静态代理模式,动态代理模式将在后面文章中给出。如有不足,敬请指...
- 介绍: 代理模式属于结构型模式,也叫委托模式。作用:为其他对象提供一种代理以控制这个对象的访问。 类图: Subj...