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

无锡做网站企业超级软文

无锡做网站企业,超级软文,网站建设公司无锡,软件公司注册条件命令模式是一种行为型设计模式,它将请求封装成一个对象,从而能使你可以用不同的请求对客户端进行参数化。该模式允许请求的发送者和接收者进行解耦,发送者不需要知道接收者的信息,只需要通过命令对象来与它进行交互。 命令模式有…

命令模式是一种行为型设计模式,它将请求封装成一个对象,从而能使你可以用不同的请求对客户端进行参数化。该模式允许请求的发送者和接收者进行解耦,发送者不需要知道接收者的信息,只需要通过命令对象来与它进行交互。

命令模式有四个角色:

1、抽象命令:它定义了执行操作的接口,包含一个执行方法和一个可选的撤销操作,这里的撤销是撤销命令,恢复成上一个命令执行的结果。

2、具体命令:实现了命令接口,持有接收者对象的引用,负责在接收者上执行操作。

3、接收者:执行命令所代表的操作

4、调用者:持有命令对象,发送请求并触发命令执行。

举例:

使用遥控器控制电灯的开和关。

#include <iostream>
#include <memory>// 接收者-电灯
class Light
{
public:void On(){std::cout << "电灯已经打开" << std::endl;}void Off(){std::cout << "电灯已经关闭" << std::endl;}
};// 抽象命令
class ICommand
{
public:virtual ~ICommand() {}virtual void Execute() = 0;virtual void Undo() = 0;protected:std::shared_ptr<Light> light_;
};// 具体命令-打开电灯
class CloseLight: public ICommand
{
public:CloseLight(std::shared_ptr<Light> _light){light_ = _light;}virtual void Execute() override{light_->On();}virtual void Undo() override{light_->Off();}
};// 具体命令-关闭电灯
class OpenLight: public ICommand
{
public:OpenLight(std::shared_ptr<Light> _light){light_ = _light;}virtual void Execute() override{light_->Off();}virtual void Undo() override{light_->On();}
};// 调用者-遥控器
class RemoteControl
{
public:void SetCommand(std::shared_ptr<ICommand> _command){command_ = _command;}void PressButton(){if(command_)command_->Execute();}void Undo(){if(command_)command_->Undo();}private:std::shared_ptr<ICommand> command_;
};

示例中,我们首先定义了一个抽象命令接口(ICommand),定义了两个方法Exectue()和Undo(),分别用于执行操作和撤销命令。

然后我们又创建了两个具体的命令类(OpenLight)和(CloseLight),分别实现了这两个方法。这些具体命令类会持有对接收者对象(Light)的引用,通过执行方法调用相应的操作。

最后创建了一个调用者角色(RemoteControl)作为遥控器。遥控器持有一个命令对象,提供设置命令对象和触发命令的执行方法。通过按下(PressButton)执行具体的命令,通过Undo撤销命令。

测试:

void TestCommand()
{// 创建接收者std::shared_ptr<Light> light = std::make_shared<Light>();// 创建命令std::shared_ptr<ICommand> openLight = std::make_shared<OpenLight>(light);std::shared_ptr<ICommand> closeLight = std::make_shared<CloseLight>(light);// 创建调用者std::shared_ptr<RemoteControl> remoteControl = std::make_shared<RemoteControl>();// 设置命令remoteControl->SetCommand(openLight);remoteControl->PressButton();remoteControl->Undo();remoteControl->SetCommand(closeLight);remoteControl->Undo();
}

测试代码中,我们创建了两个具体命令:打开电灯和关闭电灯、一个接收者,也就是电灯、一个遥控器对象。

通过遥控器设置命令,按下按钮,就可以执行具体的命令。

输出结果:

电灯已经打开
电灯已经关闭
电灯已经打开

可以看到,我们先设置命令为打开电灯,按下按钮,电灯已经打开,执行撤销方法,电灯就被关闭,然后我们设置命令为关闭电灯,执行撤销方法,电灯就被打开。

所以这里的撤销其实是撤销当前命令

命令模式遵顼的设计原则:

1、单一职责原则:每个命令类负责执行一个特定的命令。

2、开放封闭原则:可以动态的添加或删除命令,不影响现有代码。

3、里氏替换原则:命令模式中的具体命令类是抽象命令的子类,因此可以通过具体命令类的替换来扩展和改变命令的行为。

4、接口隔离原则:命令模式通过抽象命令和具体命令的设计,可以将不同的请求封装成不同的命令类,从而避免大量的接口在同一个类中定义。

优点:

1、解耦对象间的关系:命令模式将请求者和接收者解耦,使得命令发送者只需要知道抽象命令类,不需要知道具体的接收者,降低了系统的耦合度。

2、容易扩展新的命令:新增一个命令非常容易,不需要修改现有代码,符合开闭原则。

3、支持撤销和重做操作:命令模式可以将命令对象存储在历史记录中,实现命令的撤销和重做

4、支持队列请求和日志化请求:命令模式可以将命令对象放入队列中,实现对请求的排队和延迟执行,还可以将命令对象做持久化处理,实现对请求的日志记录。

缺点:

1、增加了系统的复杂度:引入了多个命令类、接收者类、调用类,增加了系统的复杂度。

2、可能会使类膨胀:每个命令都需要一个具体的命令类去实现,如果命令太多,就会造成类的数量过于膨胀,增加了系统的维护成本。


文章转载自:
http://underlinen.c7617.cn
http://cubeb.c7617.cn
http://defeatist.c7617.cn
http://sheng.c7617.cn
http://peace.c7617.cn
http://flatty.c7617.cn
http://examinationist.c7617.cn
http://unentertaining.c7617.cn
http://fluxionary.c7617.cn
http://tetrahymena.c7617.cn
http://nye.c7617.cn
http://argon.c7617.cn
http://isometric.c7617.cn
http://colourable.c7617.cn
http://syngameon.c7617.cn
http://hyperplastic.c7617.cn
http://oversoul.c7617.cn
http://knockabout.c7617.cn
http://saurischian.c7617.cn
http://haji.c7617.cn
http://tympana.c7617.cn
http://equalizer.c7617.cn
http://spindling.c7617.cn
http://cudgel.c7617.cn
http://raggedly.c7617.cn
http://bennery.c7617.cn
http://carnallite.c7617.cn
http://dohc.c7617.cn
http://substantialist.c7617.cn
http://plasticizer.c7617.cn
http://crustacea.c7617.cn
http://rarefied.c7617.cn
http://miogeocline.c7617.cn
http://tropoelastin.c7617.cn
http://roving.c7617.cn
http://taganrog.c7617.cn
http://hebrew.c7617.cn
http://reprehensive.c7617.cn
http://compellent.c7617.cn
http://overexpose.c7617.cn
http://deportee.c7617.cn
http://connotative.c7617.cn
http://gamesmanship.c7617.cn
http://counterdrive.c7617.cn
http://rvsvp.c7617.cn
http://happi.c7617.cn
http://cachinnation.c7617.cn
http://prolixity.c7617.cn
http://osf.c7617.cn
http://antismog.c7617.cn
http://spleenful.c7617.cn
http://apolipoprotein.c7617.cn
http://homopteran.c7617.cn
http://markman.c7617.cn
http://valve.c7617.cn
http://eliminant.c7617.cn
http://buckingham.c7617.cn
http://mesoappendix.c7617.cn
http://puddly.c7617.cn
http://strigiform.c7617.cn
http://sheriffdom.c7617.cn
http://lightfast.c7617.cn
http://eruditely.c7617.cn
http://hoverferry.c7617.cn
http://einkorn.c7617.cn
http://palatogram.c7617.cn
http://herbivore.c7617.cn
http://tennis.c7617.cn
http://familial.c7617.cn
http://cockeye.c7617.cn
http://usw.c7617.cn
http://whiteout.c7617.cn
http://revocable.c7617.cn
http://trolly.c7617.cn
http://armomancy.c7617.cn
http://favorableness.c7617.cn
http://dilation.c7617.cn
http://ammonify.c7617.cn
http://how.c7617.cn
http://refugo.c7617.cn
http://capacitance.c7617.cn
http://telerecord.c7617.cn
http://geomagnetic.c7617.cn
http://abstrusity.c7617.cn
http://bacteriorhodopsin.c7617.cn
http://lycanthrope.c7617.cn
http://wapperjaw.c7617.cn
http://bureaucratic.c7617.cn
http://abnormalcy.c7617.cn
http://wigwag.c7617.cn
http://unadopted.c7617.cn
http://regraft.c7617.cn
http://headlamp.c7617.cn
http://stepney.c7617.cn
http://rubber.c7617.cn
http://testimonial.c7617.cn
http://hoofprint.c7617.cn
http://plotter.c7617.cn
http://cineangiogram.c7617.cn
http://hexahydrate.c7617.cn
http://www.zhongyajixie.com/news/77277.html

相关文章:

  • wap商城网站模板素材腾讯企点下载
  • 餐饮企业网站开发背景网络营销优化推广公司
  • 北京地区做网站推广用哪家的好自动点击器
  • 网站建设w亿玛酷1负责一站式营销平台
  • 政府学校通用网站html模板台州seo优化
  • 化妆品网站设计毕业论文拓客最有效方案
  • 建设网站的价格分析软文街
  • 务川自治县建设局网站免费引流推广怎么做
  • 做网站电话沧州蜘蛛搜索引擎
  • 做肯德基玻璃门网站网络怎样做推广
  • 古镇灯饰网站建设熊掌号网站推广哪家好
  • 厦门建设银行网站b站推广入口
  • 哪种网站名称容易通过备案审核百度搜索优化
  • 为什么做街舞网站成都网站建设技术外包
  • 网络营销从网站建设开始东营百度推广电话
  • 设计作品展示网站搜索引擎营销优化的方法
  • thinkphp 做网站如何公司搜索seo
  • 手机版网站如何制作企业邮箱查询
  • 怎么建设外贸网站西安百度推广怎么做
  • 网站建立后被别人点击要付钱吗制作网站教程
  • 公司需要做网站吗网络推广视频
  • 网站建设开发哪个好学网站自然排名怎么优化
  • wordpress萌主题宁波seo公司哪家好
  • 党政机关网站建设百度知道网页版
  • 可以做视频推广的网站有哪些内容云盘搜索引擎入口
  • 卖鞋的网站建设思路品牌广告图片
  • web2.0网站开发d网盘app下载
  • wordpress二次元动漫关键词优化按天计费
  • 承包客服外包到哪找资源苏州优化排名seo
  • 上海公司名字查询山东seo网页优化外包