美团网站除佣金表格怎么做,网站建设的费用是不是含税的,大型网站制作公司飞数,手表网站查询1.什么是代理模式#xff1f;
代理模式Proxy Pattern是一种结构型设计模式#xff0c;用于控制对其他对象的访问。
在代理模式中#xff0c;允许一个对象#xff08;代理#xff09;充当另一个对象#xff08;真实对象#xff09;的接口#xff0c;以控制对这个对象的…1.什么是代理模式
代理模式Proxy Pattern是一种结构型设计模式用于控制对其他对象的访问。
在代理模式中允许一个对象代理充当另一个对象真实对象的接口以控制对这个对象的访问。通常用于在访问某个对象时引入一些间接层(中介的作用)这样可以在访问对象时添加额外的控制逻辑比如限制访问权限延迟加载。
比如说有一个文件加载的场景为了避免直接访问“文件”对象我们可以新增一个代理对象代理对象中有一个对“文件对象”的引用在代理对象的 load 方法中可以在访问真实的文件对象之前进行一些操作比如权限检查然后调用真实文件对象的 load 方法最后在访问真实对象后进行其他操作比如记录访问日志。
2.代理模式的组成 Subject抽象主题 抽象类通过接口或抽象类声明真实主题和代理对象实现的业务方法。 RealSubject真实主题定义了Proxy所代表的真实对象是客户端最终要访问的对象。 Proxy代理包含一个引用该引用可以是RealSubject的实例控制对RealSubject的访问并可能负责创建和删除RealSubject的实例。
3.代理模式的使用场景
代理模式可以控制客户端对真实对象的访问从而限制某些客户端的访问权限此外代理模式还常用在访问真实对象之前或之后执行一些额外的操作比如记录日志对功能进行扩展。
以上特性决定了代理模式在以下几个场景中有着广泛的应用
虚拟代理当一个对象的创建和初始化比较昂贵时可以使用虚拟代理虚拟代理可以延迟对象的实际创建和初始化只有在需要时才真正创建并初始化对象。安全代理安全代理可以根据访问者的权限决定是否允许访问真实对象的方法。
但是代理模式涉及到多个对象之间的交互引入代理模式会增加系统的复杂性在需要频繁访问真实对象时还可能会有一些性能问题。
4.代理模式和适配器模式有什么区别
代理模式的主要目的是控制对对象的访问。通常用于在访问真实对象时引入一些额外的控制逻辑如权限控制、延迟加载等。
适配器模式的主要目的是使接口不兼容的对象能够协同工作。适配器模式允许将一个类的接口转换成另一个类的接口使得不同接口的类可以协同工作
5.C实现代理模式
【设计模式专题之代理模式】7-小明买房子 (kamacoder.com)https://kamacoder.com/problempage.php?pid1088 题目描述
小明想要购买一套房子他决定寻求一家房屋中介来帮助他找到一个面积超过100平方米的房子只有符合条件的房子才会被传递给小明查看。
输入描述
第一行是一个整数 N1 ≤ N ≤ 100表示可供查看的房子的数量。
接下来的 N 行每行包含一个整数表示对应房子的房屋面积。
输出描述
对于每个房子输出一行表示是否符合购房条件。如果房屋面积超过100平方米输出 YES否则输出 NO。
输入示例
3
120
80
110
输出示例
YES
NO
YES
思路分析
根据代理模式的组成我们要有一个抽象主题抽象类抽象类声明真实主题和代理对象实现的业务方法。这里的业务方法就是买房子。再次基础上我们需要有一个对应的真实主题具体的类继承于刚才的抽象主题是能够创建出客户端最终要访问的对象。最后要有一个代理者类来控制真实主题。对于接口函数的参数由于题目要判断房子的面积所以要有一个参数area。
代码实现
#includeiostream
using namespace std;//1、定义抽象主题 买房子
class PurchaseHouse{
public://定义一个房屋筛选的纯虚函数使得抽象主题这个类为抽象类virtual void HouseFilter(int area) 0;
};//2、定义真实主题,继承上面的抽象主题
class Purchase : public PurchaseHouse{
public:virtual void HouseFilter(int area){coutYESendl;}
};//3、定义代理者类里面要包含真是主题的实例
class Proxy{
private: //定义真实主题实例Purchase purchase;
public://定义给客户端提供的查询借口void SearchHouse(int area){//调用真实主题的对象的方法来对面积做比较if(area 100){purchase.HouseFilter(area);}else {coutNOendl;}}
};int main()
{//客户端程序//定义代理商实例Proxy MyProxy;//输入信息int N, area;cinN;for(int i0; iN; i){cinarea;//输入房屋面积后就可以通过代理商进行房屋查询了MyProxy.SearchHouse(area);}return 0;
}
关于load的写法可以参考这篇博文。设计模式之代理模式(C)_c 代理模式-CSDN博客https://zhaitianbao.blog.csdn.net/article/details/129949951