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

做网站属软件什么专业/广告公司名称

做网站属软件什么专业,广告公司名称,快速做网站联系电话,好的app制作公司代理模式 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问 Subject定义RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方使用Proxy。 isubject.h #pragma onceclass ISuject { public:virtua…

代理模式
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问

在这里插入图片描述
Subject定义RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方使用Proxy。
isubject.h

#pragma onceclass ISuject
{
public:virtual ~ISuject() {}virtual void Request() = 0;
};

RealSubject类,定义Proxy所代表的真实实体

#pragma once#include "isubject.h"#include <iostream>class RealSubject : public ISuject
{
public:void Request() override{std::cout << "真实的请求..." << std::endl;}
};

Proxy类,保存一个实体的指针或者引用,让代理可以访问实体,并提供一个与Subject的接口相同的接口。这样代理就可以用来替代实体。
proxy.h

#pragma once#include "isubject.h"
#include "realSubject.h"class Proxy : public ISuject
{
public:void Request() override{if (m_pRealSubject == nullptr){m_pRealSubject = new RealSubject();}m_pRealSubject->Request();}~Proxy(){if (m_pRealSubject != nullptr){delete m_pRealSubject;m_pRealSubject = nullptr;}}private:RealSubject *m_pRealSubject;
};

客户端main.cpp:

#include "proxy.h"int main()
{Proxy *proxy = new Proxy();proxy->Request();delete proxy;getchar();return 0;
}

运行结果:

真实的请求...

适配器模式
UML图表示
在这里插入图片描述
代码举例:
target.h

#pragma once#include <iostream>class Target
{
public:virtual ~Target() {}virtual void Request(){std::cout << "普通请求..." << std::endl;};
};

目标对象Target需要的是一个普通请求的函数接口Request
而需要适配的Adaptee,只有一个特殊请求的函数接口SpecificRequest。怎么样做个转接头,让Adaptee的SpecificRequest可以被目标对象Target当成普通请求来使用?

需要适配的对象adaptee.h

#pragma once#include <iostream>class Adaptee
{
public:void SpecificRequest(){std::cout << "特殊请求..." << std::endl;}
};

适配器adapter.h

#pragma once#include "target.h"
#include "adaptee.h"class Adapter : public Target
{
public:Adapter() : m_adaptee(new Adaptee()){}~Adapter(){delete m_adaptee;m_adaptee = nullptr;}void Request() override{m_adaptee->SpecificRequest();}private:Adaptee *m_adaptee;
};

客户端main.cpp:

#include "adapter.h"int main()
{Target *target = new Adapter();target->Request();getchar();return 0;
}

运行结果:

特殊请求...

我们想这样一个问题,如果适配器模式中的被适配的类Adaptee中SpecificRequest()变成了和Target中一样的Request(),那么适配器模式是不是就和代理模式相同了呢?是的。
这时候,适配器模式中的Target就成了代理模式中的Subject,适配器模式中的Adapter就成了代理模式中的Proxy,适配器模式中的被代理对象Adaptee就成了代理模式中的被代理者RealSubject了。
这就是这两个模式的相似之处。

相同点
与代理模式的相似之处是,适配器模式也是一个单一组件的包装器。

不同点
代理模式提供的对外调用接口(public 成员函数),和RealSubject中的是相同的;
而适配器模式提供的对外调用接口(public 成员函数),与目标类Target提供的对外接口相同, 和被适配类Adaptee中的外部接口不同。

归纳为:适配器类的接口可以与原始类的不同,但与目标类的相同。
。而代理模式中的代理类提供与被代理者完全相同的接口。

这是二者的作用不同有关:适配器模式是将一个类的接口转换为一个兼容的但不相同的接口。适配器模式就好像转接头一样,将两个不同的类连接在一起,让他们可以做到其中的一个可以被另外一个调用,尽管他们的接口完全不同。
举个生活中常见的例子:手机需要的是5V的电压,才能进行充电,但是家用电是220V,这时候的手机充电器就充当了一个适配器的角色,它将220V的电压转换成手机可以接受的5V电压。

而代理模式的作用却不同,代理模式是需要和被代理者完全一样的接口,这样代理者在被使用的时候,就可以像使用被代理者一样,让调用者感觉不到这两者的差别。

参考:
适配器模式C++实现
适配器模式C++实现

http://www.lbrq.cn/news/1379989.html

相关文章:

  • 重庆微信网站制作专家/百度指数的搜索指数
  • 程序员自己做网站赚钱/如何创建网址
  • 上海门户网站制作/企业如何进行搜索引擎优化
  • 网站怎么做视频背景/深圳推广
  • 湘西 网站 建设 公司/东莞整站优化推广公司找火速
  • 二级网站怎样做排名/企业网站免费制作
  • 云主机可以做网站吗/扬州网络推广公司
  • 石桥铺网站建设公司/千锋培训学费多少钱
  • 瓷器网站怎么做/品牌宣传推广策划方案
  • 网站系统 外贸/英文seo是什么
  • 英语网站建设/百度搜索 手机
  • 网站制作费用及后期运营/属性词 关键词 核心词
  • 昆明学校网站建设/大兴今日头条新闻
  • 昆明做网站公/香港域名注册网站
  • 怎么给自己制作一个网站/系统优化的例子
  • 百度推广让我先做虚拟网站后/品牌推广方式有哪些
  • 企业网站建设视频/做百度推广的业务员电话
  • 做网站的公司合肥/网上推广app
  • 哪里做网站一套一百/网站网络营销推广
  • 工程建设标准网站/seo搜索引擎优化课程
  • 做网站可以用什么语言/搜索引擎优化学习
  • 网站开发及应用/网络推广营销方式
  • jQuery网站建设中倒计时代码/广告设计
  • 建设网站设计论文范文/广告视频
  • 邳州做网站/seo技巧分享
  • 句容建设路幼儿园网站/百度电脑版下载安装
  • 如何做网站地图txt/应用商店app下载
  • 网站开发体会/免费单页网站在线制作
  • 建设工程官方网站/少儿编程培训机构排名前十
  • 怎样做一个免费的网站/成人短期培训学校
  • 让 OAuth 授权码流程更安全的 PKCE 技术详解
  • 【Flask基础②】 | 路由、响应与异常处理
  • wxPython 实践(五)高级控件
  • 【Debian】4-‌1 Gitea简介以及与其他git方案差异
  • Android Emoji 全面解析:从使用到自定义
  • MySQL索引和事务笔记