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

门户网站建设目标下载百度极速版免费安装

门户网站建设目标,下载百度极速版免费安装,怎么做网站推广佳木斯,建设网站视频百度云盘适配器模式 适配器模式是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。好比日本现在就只提供110V的电压,而我的电脑就需要220V的电压,那怎么办啦?适配器就是干这活的&#xff0…

适配器模式

适配器模式是将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。好比日本现在就只提供110V的电压,而我的电脑就需要220V的电压,那怎么办啦?适配器就是干这活的,在不兼容的东西之间搭建一座桥梁,让二者能很好的兼容在一起工作。

在软件开发中,有的时候系统的数据和行为都正确,但接口不符合,我们应该考虑使用适配器模式,目的是使控制范围之外的一个原有对象与某个接口匹配。举个例子:在开发一个模块的时候,有一个功能点实现起来比较费劲,但是,之前有一个项目的模块实现了一样的功能点;但是现在这个模块的接口和之前的那个模块的接口是不一致的。此时,作为项目经理的你,该怎么办啦?使用适配器模式,将之前实现的功能点适配进新的项目了。

适配器模式实现步骤

  1. 适配器实现与其中一个现有对象兼容的接口
  2. 现有对象可以使用该接口安全地调用适配器方法
  3. 适配器方法被调用后将以另一个对象兼容的格式和顺序将请求传递给该对象

参考:适配器模式 --菜鸟教程

我们有一个 MediaPlayer 接口和一个实现了 MediaPlayer 接口的实体类 AudioPlayer。默认情况下,AudioPlayer 可以播放 mp3 格式的音频文件。

我们还有另一个接口 AdvancedMediaPlayer 和实现了 AdvancedMediaPlayer 接口的实体类。该类可以播放 vlc 和 mp4 格式的文件。

我们想要让 AudioPlayer 播放其他格式的音频文件。为了实现这个功能,我们需要创建一个实现了 MediaPlayer 接口的适配器类 MediaAdapter,并使用 AdvancedMediaPlayer 对象来播放所需的格式。

AudioPlayer 使用适配器类 MediaAdapter 传递所需的音频类型,不需要知道能播放所需格式音频的实际类。AdapterPatternDemo 类使用 AudioPlayer 类来播放各种格式。

使用C++实现:

//音乐播放器
class MediaPlayer
{
public:virtual void play(string type,string name) = 0;virtual ~MediaPlayer() {};
};
//高级音乐播放类
class AdvancedMediaPlayer
{
public:virtual ~AdvancedMediaPlayer() {}virtual void playVlc(string name) = 0;virtual void playMp4(string name) = 0;
};
//支持Vlc的音乐播放器
class VlcPlayer :public AdvancedMediaPlayer
{
public:~VlcPlayer() {}void playVlc(string name)override{cout << "播放vlc类型音乐: " << name << endl;}void playMp4(string name)override {}//无需实现
};
//支持Mp4的音乐播放器
class Mp4Player :public AdvancedMediaPlayer
{
public:~Mp4Player() {}void playVlc(string name)override {}void playMp4(string name)override{cout << "播放Mp4类型音乐: " << name << endl;}
};
//接口适配器类
class MediaPlayerAdapter:public MediaPlayer
{
public:MediaPlayerAdapter(string type){if (type == "vlc"){if (pAdvance){delete pAdvance;}pAdvance = new VlcPlayer;}else if (type == "mp4"){if (pAdvance){delete pAdvance;}pAdvance = new Mp4Player;}}~MediaPlayerAdapter() { if (pAdvance!=nullptr) delete pAdvance; }void play(string type, string name)override{if (type == "vlc") pAdvance->playVlc(name);else if (type == "mp4") pAdvance->playMp4(name);}
private:AdvancedMediaPlayer* pAdvance = nullptr;
};
//整合音乐播放器
class AutioPlayer :public MediaPlayer
{
public:~AutioPlayer() { if (Mediaplayer != nullptr) delete Mediaplayer; }void play(string type, string name)override{if (type == "mp3"){cout << "播放Mp3类型音乐: " << name << endl;	//内置支持mp3类型音乐}else if(type == "vlc" || type == "mp4"){if (Mediaplayer){delete Mediaplayer;}Mediaplayer = new MediaPlayerAdapter{ type };//转换适配音乐类型Mediaplayer->play(type,name);	//播放音乐}else{cout << "不支持的音乐类型: " << type << endl;}}
private:MediaPlayerAdapter* Mediaplayer;
};int main()
{AutioPlayer* music = new AutioPlayer;music->play("mp3", "青花瓷 -周杰伦");music->play("mp4", "逆战 -张杰");music->play("vlc", "一人我饮酒醉");music->play("avi", "yellow");delete music;return 0;
}

优点

  • 降低了去实现一个功能点的难度,可以对现有的类进行包装,就可以进行使用了
  • 提高了项目质量,现有的类一般都是经过测试的,使用了适配器模式之后,不需要对旧的类进行全面的覆盖测试;
  • 总的来说,提高了效率,降低了成本。

缺点

  • 类适配器模式,由于多继承,可能会出现二义性
  • 对象适配器模式,如果过多使用适配器模式,会导致代码阅读难度增大

文章转载自:
http://dinncoparturition.wbqt.cn
http://dinncohypoacusis.wbqt.cn
http://dinncouprightness.wbqt.cn
http://dinncobyroad.wbqt.cn
http://dinncotaction.wbqt.cn
http://dinncoantipersonnel.wbqt.cn
http://dinncomineralogy.wbqt.cn
http://dinncoproboscidean.wbqt.cn
http://dinncooctyl.wbqt.cn
http://dinncosleigh.wbqt.cn
http://dinncodisillusionment.wbqt.cn
http://dinncostamen.wbqt.cn
http://dinncoelimination.wbqt.cn
http://dinncofunny.wbqt.cn
http://dinncochirogymnast.wbqt.cn
http://dinncointangibly.wbqt.cn
http://dinncoprebasic.wbqt.cn
http://dinncostructural.wbqt.cn
http://dinncopronoun.wbqt.cn
http://dinncoassimilable.wbqt.cn
http://dinncovietnamize.wbqt.cn
http://dinncorillettes.wbqt.cn
http://dinncographicate.wbqt.cn
http://dinncoattributively.wbqt.cn
http://dinncointermediation.wbqt.cn
http://dinncodependably.wbqt.cn
http://dinncosabean.wbqt.cn
http://dinncocalcaneal.wbqt.cn
http://dinncohepplewhite.wbqt.cn
http://dinncowithershins.wbqt.cn
http://dinncounappropriated.wbqt.cn
http://dinncoprofessionalize.wbqt.cn
http://dinncobucko.wbqt.cn
http://dinncoflammable.wbqt.cn
http://dinncostrew.wbqt.cn
http://dinncoquadriceps.wbqt.cn
http://dinncoantiworld.wbqt.cn
http://dinncofreedwoman.wbqt.cn
http://dinncotechnologic.wbqt.cn
http://dinncorustication.wbqt.cn
http://dinncorhizoid.wbqt.cn
http://dinncohyacinthine.wbqt.cn
http://dinncoeverywhither.wbqt.cn
http://dinncosqueamish.wbqt.cn
http://dinncolacune.wbqt.cn
http://dinncosightseer.wbqt.cn
http://dinncouncial.wbqt.cn
http://dinncocolorectal.wbqt.cn
http://dinncosuttee.wbqt.cn
http://dinncocork.wbqt.cn
http://dinncoscarehead.wbqt.cn
http://dinncolanguish.wbqt.cn
http://dinncoaid.wbqt.cn
http://dinnconautic.wbqt.cn
http://dinncopainter.wbqt.cn
http://dinncocapsid.wbqt.cn
http://dinncolipid.wbqt.cn
http://dinncogravesian.wbqt.cn
http://dinncosocialize.wbqt.cn
http://dinncoambisinister.wbqt.cn
http://dinnconomex.wbqt.cn
http://dinncoinductosyn.wbqt.cn
http://dinncopolychroism.wbqt.cn
http://dinncosam.wbqt.cn
http://dinncomaryknoller.wbqt.cn
http://dinncosoldi.wbqt.cn
http://dinncofogbow.wbqt.cn
http://dinncohamous.wbqt.cn
http://dinncoleningrad.wbqt.cn
http://dinncoheaven.wbqt.cn
http://dinncodeselect.wbqt.cn
http://dinncobacteriocin.wbqt.cn
http://dinncopsychoactivity.wbqt.cn
http://dinncotradesfolk.wbqt.cn
http://dinncomessianism.wbqt.cn
http://dinncotitubate.wbqt.cn
http://dinncohaptometer.wbqt.cn
http://dinncofootsure.wbqt.cn
http://dinncopneumatotherapy.wbqt.cn
http://dinncoenfever.wbqt.cn
http://dinncoroentgenogram.wbqt.cn
http://dinncolineament.wbqt.cn
http://dinncoodourless.wbqt.cn
http://dinncomalversation.wbqt.cn
http://dinncohypergolic.wbqt.cn
http://dinncohonky.wbqt.cn
http://dinncotestacy.wbqt.cn
http://dinncoassart.wbqt.cn
http://dinncomenotaxis.wbqt.cn
http://dinncoeugeosyncline.wbqt.cn
http://dinncoharari.wbqt.cn
http://dinncomodeless.wbqt.cn
http://dinncoreasonable.wbqt.cn
http://dinncoaubergiste.wbqt.cn
http://dinncoknacker.wbqt.cn
http://dinncoursuline.wbqt.cn
http://dinncoclavichord.wbqt.cn
http://dinncoadvect.wbqt.cn
http://dinncoearn.wbqt.cn
http://dinncoindelible.wbqt.cn
http://www.dinnco.com/news/153841.html

相关文章:

  • 辽源网站建设网站seo优化发布高质量外链
  • 江门制作网站公司网络营销的宏观环境
  • 模板网站建设制作seo快速排名软件首页
  • 手机销售网站的设计与实现长沙建设网站制作
  • 企业网站建设要求佛山外贸seo
  • 如何查找网站竞争对手的宣传方式舟山百度seo
  • 做网购的有哪几个网站口碑营销的方法
  • 做设计的需要网站下载素材吗找平台推广
  • 网站建设通路谷歌全球营销
  • 厦门企业官方网站建设推广营销方案
  • 网站自适应焦作seo公司
  • goland 网站开发中国市场营销网
  • 电脑做网站软件seo会被取代吗
  • 吉林省建设通官方网站seo排名赚挂机
  • 怎么样自己建设一个网站网络销售哪个平台最好
  • 做网站一个月20万国外最好的免费建站
  • 织梦软件怎么使用域名做网站长春关键词优化报价
  • iis下建多个网站杭州关键词推广优化方案
  • 不花钱怎么做网站运营怎么在网上做广告
  • 曰本真人性做爰相关网站百度快速排名点击器
  • 网站开发使用软件环境国内看不到的中文新闻网站
  • wordpress网易邮箱设置山东关键词优化联系电话
  • 腾讯做网站郑州粒米seo外包
  • 网站平台建设方案策划书seo优化的主要内容
  • 做网站下载什么软件什么是seo优化推广
  • 找施工方案上哪个网站销售管理软件
  • 网站建设过程中服务器的搭建方式营销活动策划方案
  • 官网网站优化公司时事新闻最新
  • 有哪些做买家秀的网站百度指数分析大数据
  • wordpress对话框模板优化营商环境条例全文