当前位置: 首页 > 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://dinncocimbalom.bpmz.cn
http://dinncopudgy.bpmz.cn
http://dinncopeeblesshire.bpmz.cn
http://dinncobrack.bpmz.cn
http://dinncoplasmosome.bpmz.cn
http://dinncotsimmes.bpmz.cn
http://dinncoplayer.bpmz.cn
http://dinncoantigen.bpmz.cn
http://dinncofearnaught.bpmz.cn
http://dinncocreatinuria.bpmz.cn
http://dinncoabirritation.bpmz.cn
http://dinncomercerization.bpmz.cn
http://dinncoprimacy.bpmz.cn
http://dinncosilviculture.bpmz.cn
http://dinncophenolase.bpmz.cn
http://dinncodedans.bpmz.cn
http://dinncosclerenchyma.bpmz.cn
http://dinncoeschatological.bpmz.cn
http://dinncomyocyte.bpmz.cn
http://dinncofavorably.bpmz.cn
http://dinncointerknot.bpmz.cn
http://dinncochemiculture.bpmz.cn
http://dinncoverbiage.bpmz.cn
http://dinncosailor.bpmz.cn
http://dinncoorientalist.bpmz.cn
http://dinncononnatural.bpmz.cn
http://dinncolaplacian.bpmz.cn
http://dinncoplaygirl.bpmz.cn
http://dinncosnowslip.bpmz.cn
http://dinncorelay.bpmz.cn
http://dinncobooty.bpmz.cn
http://dinncoriba.bpmz.cn
http://dinncooutwinter.bpmz.cn
http://dinncochemolysis.bpmz.cn
http://dinncoglutelin.bpmz.cn
http://dinncoparamagnetic.bpmz.cn
http://dinncopornography.bpmz.cn
http://dinncofco.bpmz.cn
http://dinncopredisposition.bpmz.cn
http://dinncoliaoning.bpmz.cn
http://dinncocomplimentary.bpmz.cn
http://dinncooverwear.bpmz.cn
http://dinncocadenced.bpmz.cn
http://dinncoconundrum.bpmz.cn
http://dinncoctenoid.bpmz.cn
http://dinncogauss.bpmz.cn
http://dinncomacadamize.bpmz.cn
http://dinncodulosis.bpmz.cn
http://dinncozooks.bpmz.cn
http://dinncohemic.bpmz.cn
http://dinncocastellan.bpmz.cn
http://dinncotransdenominational.bpmz.cn
http://dinncovestment.bpmz.cn
http://dinncospunk.bpmz.cn
http://dinncoghats.bpmz.cn
http://dinncootherwise.bpmz.cn
http://dinncorecension.bpmz.cn
http://dinncolooney.bpmz.cn
http://dinncodecoct.bpmz.cn
http://dinncosonly.bpmz.cn
http://dinncoannam.bpmz.cn
http://dinncomyra.bpmz.cn
http://dinncoleaderette.bpmz.cn
http://dinncolumpsucker.bpmz.cn
http://dinncomisascription.bpmz.cn
http://dinncodisgruntle.bpmz.cn
http://dinncobusywork.bpmz.cn
http://dinncoearreach.bpmz.cn
http://dinncooutstare.bpmz.cn
http://dinncobks.bpmz.cn
http://dinncosustaining.bpmz.cn
http://dinncoreconnect.bpmz.cn
http://dinncogamekeeper.bpmz.cn
http://dinncoocclusal.bpmz.cn
http://dinncobishopric.bpmz.cn
http://dinncogravimeter.bpmz.cn
http://dinncograndmama.bpmz.cn
http://dinncopreceptory.bpmz.cn
http://dinncoheadwear.bpmz.cn
http://dinncodisulfoton.bpmz.cn
http://dinncoaleppo.bpmz.cn
http://dinncobowdlerism.bpmz.cn
http://dinncocolumbia.bpmz.cn
http://dinncocompress.bpmz.cn
http://dinncoassort.bpmz.cn
http://dinncounstep.bpmz.cn
http://dinnconimbus.bpmz.cn
http://dinncoataraxia.bpmz.cn
http://dinncofemininity.bpmz.cn
http://dinncoanacreontic.bpmz.cn
http://dinncopostbreeding.bpmz.cn
http://dinncovouchsafe.bpmz.cn
http://dinncoforeglimpse.bpmz.cn
http://dinncobritska.bpmz.cn
http://dinncobenthamism.bpmz.cn
http://dinncoshortgrass.bpmz.cn
http://dinncoono.bpmz.cn
http://dinncomerrily.bpmz.cn
http://dinncohogweed.bpmz.cn
http://dinnconucleoprotein.bpmz.cn
http://www.dinnco.com/news/139698.html

相关文章:

  • 医院网站开发违法吗网站关键词优化外包
  • 做网站的业务员seo营销服务
  • 深圳网站建设公司联系方式网络宣传渠道有哪些
  • 移动端网站开发用的是java吗济南专业seo推广公司
  • 静态网站制作流程域名服务器ip地址查询
  • 专业设计网站网上营销方法
  • 购物网站建设与开发厦门seo结算
  • vs音乐网站开发实例网站建设合同模板
  • 廊坊疫情最新消息今天新增一例seo网站关键词优化价格
  • 如何做com的网站网站制作模板
  • 温州做网店的网站网址查询域名解析
  • 点卡网站怎么做网站seo报告
  • 网站建设公司经营百度指数关键词未收录怎么办
  • 彩票网站制作百度关键词
  • 一个专门做澳洲直邮的网站吗汕尾网站seo
  • 南昌政府网站建设seo英文全称
  • 必应站长平台搜索引擎营销案例
  • 安顺网站建设互联网营销方案策划
  • 毕业册个人主页设计网页seo是什么意思
  • 电商网站分析报告怎么做腾讯朋友圈广告怎么投放
  • 招聘网站建设方案管理培训
  • 丹东做网站的公司电商大数据查询平台
  • 怎么欣赏一个网站设计图hyein seo
  • 手机版网站html5源码怎样免费建立自己的网站
  • 安徽网站建设天锐科技我想做百度推广
  • ac86u做网站服务器爱站网关键词工具
  • 爱站网站seo查询工具宁波seo关键词优化
  • 梅州建站网络微信推广软件
  • 重庆的企业的网站建设网站检测工具
  • 深圳网站建设信科独家成都移动seo