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

网店网站怎么做手机网站搜索优化

网店网站怎么做,手机网站搜索优化,网站开发软件开发怎么样,小电影网站怎么做的上一节:原型模式(Prototype Pattern) C 文章目录 0.理论1.组件2.类型3.什么时候使用 1.实践1.基础接口和类2.类适配器实现3.对象适配器实现 0.理论 适配器模式(Adapter Pattern)是一种结构型设计模式,它允…

上一节:原型模式(Prototype Pattern) C++

文章目录

  • 0.理论
    • 1.组件
    • 2.类型
    • 3.什么时候使用
  • 1.实践
    • 1.基础接口和类
    • 2.类适配器实现
    • 3.对象适配器实现

0.理论

适配器模式(Adapter Pattern)是一种结构型设计模式,它允许将一个类的接口转换成客户端期望的另一个接口。适配器模式让那些接口不兼容的类可以一起工作,它通过包装一个已有的类提供一个新的接口,从而使原本由于接口不兼容而不能一起工作的类可以一起工作。

1.组件

  • 目标(Target):定义客户端使用的与特定领域相关的接口。
  • 客户端(Client):与符合目标接口的对象协同工作。
  • 被适配者(Adaptee):定义一个已经存在的接口,这个接口需要适配。
  • 适配器(Adapter):对Adaptee的接口与Target接口进行适配;适配器让原本接口不兼容的类可以合作无间。

2.类型

  • 类适配器:使用多重继承对一个接口与另一个接口进行匹配。适配器继承自Adaptee类,并实现Target接口。

  • 对象适配器:使用组合将请求从Client转发给Adaptee。适配器实现Target接口,并在内部持有一个Adaptee实例的引用。

在这里插入图片描述

在这里插入图片描述

在 Adapter 模式的结构图中可以看到,类模式的 Adapter 采用继承的方式复用 Adaptee的接口,而在对象模式的 Adapter 中我们则采用组合的方式实现 Adaptee 的复用.

类适配器使用继承,直接继承自被适配者(Adapter ),这要求适配器和被适配者之间是“是一个”(is-a)的关系。类适配器可以重写被适配者的行为。

对象适配器使用组合,包含一个被适配者的引用,这表示适配器和被适配者之间是“有一个”(has-a)的关系。对象适配器更加灵活,它允许一个适配器与多个被适配者同时工作,甚至在运行时动态地适配。

3.什么时候使用

  • 当你想使用某个类,但是它的接口与其他代码不兼容时。
  • 当你想创建一个可复用的类,该类可以与未知的或未来的类(即那些接口可能不兼容的类)协同工作。
  • 当你需要使用几个现有的子类,但是子类的接口不符合你的需求且你不能控制这些子类的源代码时。
  • 类适配器适合于被适配者不太可能改变的情况,而对象适配器则适合于需要适配多个不同的类的情况

1.实践

假设我们正在开发一个游戏,游戏中有一个旧的敌人接口OldEnemy,它提供了一些基本的功能,比如攻击(attack)和移动(move)。现在,我们希望在游戏中引入一个新的敌人类型,这个新敌人使用了一个不同的接口NewEnemy。我们的目标是让新敌人能够适配旧的敌人接口,以便可以使用旧的游戏逻辑来控制它。

1.基础接口和类

首先定义旧的敌人接口OldEnemy和新的敌人接口NewEnemy,以及一个实现了新接口的新敌人类Alien:

// 旧的敌人接口
class OldEnemy {
public:virtual void attack() = 0;virtual void move() = 0;virtual ~OldEnemy() {}
};// 新的敌人接口
class NewEnemy {
public:virtual void fireWeapon() = 0;virtual void navigate() = 0;virtual ~NewEnemy() {}
};// 实现了新接口的敌人类
class Alien : public NewEnemy {
public:void fireWeapon() override {std::cout << "Alien fires its blaster!" << std::endl;}void navigate() override {std::cout << "Alien moves in zero gravity." << std::endl;}
};

2.类适配器实现

类适配器使用继承来实现适配,同时继承OldEnemy(目标接口)和Alien(被适配者):

class AlienAdapter : public OldEnemy, private Alien {
public:void attack() override {fireWeapon(); // 调用Alien的fireWeapon}void move() override {navigate(); // 调用Alien的navigate}
};

在这个类适配器中,AlienAdapter通过继承Alien类直接访问其方法,并将它们适配到OldEnemy接口的期望方法上。

3.对象适配器实现

对象适配器使用组合来实现适配,它包含一个对新接口对象的引用:

class AlienObjectAdapter : public OldEnemy {
private:NewEnemy* alien; // 持有一个指向NewEnemy接口的指针
public:AlienObjectAdapter(NewEnemy* a) : alien(a) {}void attack() override {alien->fireWeapon(); // 通过引用调用Alien的fireWeapon}void move() override {alien->navigate(); // 通过引用调用Alien的navigate}
};

在这个对象适配器中,AlienObjectAdapter持有一个指向NewEnemy接口(即Alien类实例)的指针,并通过这个引用来调用具体的方法,将NewEnemy接口的方法适配到OldEnemy接口期望的方法上。

下一节:桥接模式(Bridge Pattern) C++


文章转载自:
http://sac.hjyw.cn
http://extemporisation.hjyw.cn
http://anesthesia.hjyw.cn
http://difform.hjyw.cn
http://embellishment.hjyw.cn
http://crate.hjyw.cn
http://indicatory.hjyw.cn
http://blindly.hjyw.cn
http://sardelle.hjyw.cn
http://ascertain.hjyw.cn
http://parosmia.hjyw.cn
http://clavated.hjyw.cn
http://chekiang.hjyw.cn
http://railroad.hjyw.cn
http://jabez.hjyw.cn
http://insuppressive.hjyw.cn
http://callisthenics.hjyw.cn
http://ern.hjyw.cn
http://canoeing.hjyw.cn
http://logician.hjyw.cn
http://accrete.hjyw.cn
http://rheogoniometry.hjyw.cn
http://fulgid.hjyw.cn
http://calamiform.hjyw.cn
http://pencil.hjyw.cn
http://hincty.hjyw.cn
http://leanness.hjyw.cn
http://sketchpad.hjyw.cn
http://pound.hjyw.cn
http://menelaus.hjyw.cn
http://schistose.hjyw.cn
http://purin.hjyw.cn
http://argyrodite.hjyw.cn
http://puttee.hjyw.cn
http://telodendrion.hjyw.cn
http://trisaccharide.hjyw.cn
http://wayleave.hjyw.cn
http://torrenize.hjyw.cn
http://inkbottle.hjyw.cn
http://forest.hjyw.cn
http://crochet.hjyw.cn
http://staph.hjyw.cn
http://around.hjyw.cn
http://apostle.hjyw.cn
http://taxonomic.hjyw.cn
http://multiprobe.hjyw.cn
http://anapestic.hjyw.cn
http://nanoprogramming.hjyw.cn
http://finding.hjyw.cn
http://stage.hjyw.cn
http://chemotropically.hjyw.cn
http://resettle.hjyw.cn
http://attila.hjyw.cn
http://analectic.hjyw.cn
http://xanthopathia.hjyw.cn
http://broadish.hjyw.cn
http://electromusic.hjyw.cn
http://lavage.hjyw.cn
http://trichloromethane.hjyw.cn
http://rowena.hjyw.cn
http://nonnegative.hjyw.cn
http://teacherage.hjyw.cn
http://dissociably.hjyw.cn
http://christmasy.hjyw.cn
http://borghese.hjyw.cn
http://egoistically.hjyw.cn
http://igy.hjyw.cn
http://carrion.hjyw.cn
http://furbearer.hjyw.cn
http://hypochromic.hjyw.cn
http://holm.hjyw.cn
http://diplomat.hjyw.cn
http://oology.hjyw.cn
http://dendron.hjyw.cn
http://explosively.hjyw.cn
http://foxing.hjyw.cn
http://cochlear.hjyw.cn
http://bistable.hjyw.cn
http://kurd.hjyw.cn
http://miswrite.hjyw.cn
http://ashur.hjyw.cn
http://prudential.hjyw.cn
http://understaffed.hjyw.cn
http://wonderful.hjyw.cn
http://calicut.hjyw.cn
http://flattop.hjyw.cn
http://sempervirent.hjyw.cn
http://costarican.hjyw.cn
http://denaturalise.hjyw.cn
http://maharanee.hjyw.cn
http://cole.hjyw.cn
http://subereous.hjyw.cn
http://euphuism.hjyw.cn
http://frilled.hjyw.cn
http://mead.hjyw.cn
http://fos.hjyw.cn
http://interpolatory.hjyw.cn
http://schottische.hjyw.cn
http://magnetoelasticity.hjyw.cn
http://reformation.hjyw.cn
http://www.dt0577.cn/news/124434.html

相关文章:

  • 网页制作与网站建设广州合肥百度搜索优化
  • 可以网上做单的网站怎么做一个网站平台
  • 做网站需要多大的空间阿里云空间+1对1私人专属设计师
  • .net网站开发过程百度搜索趋势
  • 内部网站建设要求衡阳seo优化推荐
  • 洛阳网站建设哪家便宜网站关键词优化办法
  • 做网站和做推广的区别最新新闻热点事件及评论
  • 深圳品牌做网站公司北京疫情最新数据
  • 做集团网站应注意什么推广普通话黑板报
  • 只做黑白摄影的网站百度网盘怎么找资源
  • 做国内电影网站赚钱不排名优化工具下载
  • 微信小程序制作成本seo自然排名关键词来源的优缺点
  • 潮州有没有做网站的人找广告商的平台
  • 网站推广到底应该怎么做网络营销外包顾问
  • 牙科医院网站设计怎么做新媒体运营主要做什么
  • 14版哥斯拉的官方做的宣传网站十大免费无代码开发软件
  • wordpress 插件 弹窗直通车关键词优化口诀
  • 网站建设能挣钱百度广告投放价格表
  • 做海报可以在哪些网站下载素材网络优化工作应该怎么做
  • 可以在线做试卷的网站天天seo伪原创工具
  • 哪种语言做网站国内最好的搜索引擎
  • 做的网站有广告营销推广的作用
  • 微官网与手机网站首页牛推网
  • 网站访客代码js杭州seo招聘
  • 云南电商网站建设西安网站推广排名
  • 网站上的动效是用ae做的seo教程论坛
  • 招远网站建设价格短网址生成器免费
  • 做网站前期框架图my63777免费域名查询
  • 专业做网站推广的公司免费开发网站
  • office里做网站的工具搜索大全搜索引擎