当前位置: 首页 > wzjs >正文

酒类网站建2023引流软件

酒类网站建,2023引流软件,刷抖音一天赚四五百块,web网页认证核心思想 代理模式(Proxy Pattern)是一种结构型设计模式,其核心思想是为其他对象提供一个代理或占位符,以控制对这个对象的访问。代理对象通常会在客户端和目标对象之间起到中介作用,可以在不改变目标对象的情况下&am…

核心思想

代理模式(Proxy Pattern)是一种结构型设计模式,其核心思想是为其他对象提供一个代理或占位符,以控制对这个对象的访问。代理对象通常会在客户端和目标对象之间起到中介作用,可以在不改变目标对象的情况下,增加额外的功能或控制访问。

解决的问题

代理模式主要解决以下问题:
​访问控制:限制对目标对象的访问,例如权限控制、延迟加载等。
​功能增强:在不修改目标对象的情况下,增加额外的功能,例如日志记录、性能监控等。
​远程代理:为位于不同地址空间的对象提供本地代表,例如远程方法调用(RMI)。
​虚拟代理:延迟创建开销较大的对象,直到真正需要时才创建。

使用场景

延迟加载(Lazy Loading)​:当对象的创建和初始化成本较高时,可以使用代理模式来延迟对象的创建,直到真正需要时才进行初始化。
​访问控制:当需要对对象的访问进行控制时,可以使用代理模式来限制或过滤对目标对象的访问。
​日志记录:当需要在访问对象时记录日志或进行审计时,可以使用代理模式来添加日志功能。
​远程代理:当需要访问远程对象时,可以使用代理模式来隐藏网络通信的复杂性。

优点:​

​职责清晰:代理模式将客户端与目标对象解耦,使得职责更加清晰。
​扩展性强:可以在不修改目标对象的情况下,通过代理对象增加额外的功能。
​控制访问:代理对象可以控制对目标对象的访问,例如权限控制、延迟加载等。

缺点:​

​增加复杂性:引入代理对象会增加系统的复杂性,尤其是在需要多层代理时。
​性能开销:代理对象可能会引入额外的性能开销,尤其是在远程代理或虚拟代理的情况下。

示例代码

以下是一个简单的 C++11 代理模式示例,展示了如何使用代理模式来实现延迟加载和日志记录:

#include <iostream>
#include <memory>
#include <string>// 目标接口
class Subject {
public:virtual void Request() const = 0;virtual ~Subject() = default;
};// 真实目标类
class RealSubject : public Subject {
public:void Request() const override {std::cout << "RealSubject: Handling Request." << std::endl;}
};// 代理类
class Proxy : public Subject {
public:Proxy() : realSubject_(nullptr) {}void Request() const override {// 延迟加载真实对象if (!realSubject_) {realSubject_ = std::make_unique<RealSubject>();}std::cout << "Proxy: Logging before handling request." << std::endl;realSubject_->Request();std::cout << "Proxy: Logging after handling request." << std::endl;}private:mutable std::unique_ptr<RealSubject> realSubject_;
};// 模拟客户端代码
void ClientCode(const Subject& subject) {subject.Request();
}int main() {std::cout << "Client: Executing the client code with a real subject:" << std::endl;RealSubject realSubject;ClientCode(realSubject);//这里客户端直接使用目标对象std::cout << std::endl;std::cout << "\nClient: Executing the client code with a proxy:" << std::endl;Proxy proxy;ClientCode(proxy);//这里客户端使用代理对象return 0;
}

输出结果

Client: Executing the client code with a real subject:
RealSubject: Handling Request.Client: Executing the client code with a proxy:
Proxy: Logging before handling request.
RealSubject: Handling Request.
Proxy: Logging after handling request.

代码解析

​Subject:定义了目标接口,RealSubject 和 Proxy 都实现了这个接口。
​RealSubject:是真实的目标对象,负责实际的业务逻辑。
​Proxy:代理类,持有一个 RealSubject 的指针,并在 Request 方法中控制对 RealSubject 的访问。代理类在 Request 方法中增加了日志记录功能,并实现了延迟加载。
​ClientCode:客户端代码,通过 Subject 接口与目标对象交互,无需关心目标对象是 RealSubject 还是 Proxy。

总结

代理模式通过引入代理对象来控制对目标对象的访问,可以在不修改目标对象的情况下增加额外的功能或控制访问。它在延迟加载、访问控制、日志记录等场景中非常有用。然而,代理模式也会增加系统的复杂性和性能开销,因此在使用时需要权衡利弊。

http://www.dtcms.com/wzjs/452375.html

相关文章:

  • 免费开源网站模板什么叫优化
  • 芜湖建设工程质量监督站网站讯展网站优化推广
  • kuler 网站靠谱的代运营公司
  • 建设银行长清网站关键词优化需要从哪些方面开展
  • 服装网站建设策划书的基本结构在线网站流量查询
  • 郑州做网站哪里好免费大数据查询平台
  • 沈阳市城乡建设局网站首页保定seo博客
  • bbin接口网站开发域名注册多少钱
  • 欧力虎网站建设企业查询官网
  • 表白网页生成器手机版网站建设优化推广系统
  • 做外贸c2c网站有哪些博客seo怎么做
  • 搜索网站的软件有哪些网店营销策略有哪些
  • 网页设计个人简历代码seo网站优化方案案例
  • 网站+做内容分发资格网站建设 全网营销
  • 邹城网站建设zczwxx搜狗引擎
  • 网页设计教学网站东莞优化排名公司
  • 网站详情怎么做的搜索引擎优化的目的是对用户友好
  • 哪个网站专业做商铺网站推广方案策划
  • 提供定制型网站建设百度网站推广排名
  • 搜索引擎优化方法有哪几种杭州seo服务公司
  • 阿里云建站数据库用什么seo职位具体做什么
  • win2008 网站服务器网站制作的费用
  • 东营建设信息网(东营市住房和城乡如何做一个网站的seo
  • 潍坊中小型网站建设公司好用的搜索引擎有哪些
  • 网站建设讲师招聘营销方式有哪些
  • 做商品网站的教学视频全渠道营销成功案例
  • 玉溪做网站建设的公司推广拉新app哪几个靠谱
  • 软件工程就业岗位电脑系统优化软件十大排名
  • 广州微网站建设机构矿坛器材友情交换
  • 网站怎么申请支付宝可以免费领取会员的软件