范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

设计模式16状态模式

  状态模式
  当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
  状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。
  把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。
  状态模式示例代码 #include using namespace std;  class Context;  class State { public:     virtual void Handle(Context* ctx) = 0;     virtual ~State() {} };  class ConcreteStateA : public State { public:     virtual void Handle(Context* ctx) override; };  class ConcreteStateB : public State { public:     virtual void Handle(Context* ctx) override; };  class ConcreteStateC : public State { public:     virtual void Handle(Context* ctx) override; };  class ConcreteStateD : public State { public:     virtual void Handle(Context* ctx) override; };  class Context { public:     State* state;     Context(State *s) {         state = s;     }     ~Context() {         if (state) {             delete state;         }     }     void Request(); };  void Context::Request() {     state->Handle(this); }  void ConcreteStateA::Handle(Context *ctx) {     cout << "state A handle" << endl;     ctx->state = new ConcreteStateB; }  void ConcreteStateB::Handle(Context *ctx) {     cout << "state B handle" << endl;     ctx->state = new ConcreteStateC; }  void ConcreteStateC::Handle(Context *ctx) {     cout << "state C handle" << endl;     ctx->state = new ConcreteStateD;     }  void ConcreteStateD::Handle(Context *ctx) {     cout << "state D handle" << endl; }   int main(int argc, char const* argv[]) {  ConcreteStateA s;     Context ctx(&s);     ctx.Request();     ctx.Request();     ctx.Request();     ctx.Request();     return 0; }
  将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和转换
  消除庞大的条件分支语句,大的分支判断会使得它们难以修改和扩展。
  状态模式通过把各种状态转移逻辑分布到State的子类之间,来减少相互间的依赖
  什么时候考虑使用状态模式?
  当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了
  公众号:   cpp_yang
  个人微信:   yangxg_cxy
  今日头条:   程序员杨小哥
  B站:   https://space.bilibili.com/473029051
  知乎:   https://www.zhihu.com/people/cpp_yang

Q1全球手机出货量公布三星稳住冠军宝座,国产品牌表现怎么样?知名市场调研机构Canalys公布2022年第一季度全球智能手机市场报告,由于疫情和经济情况双重因素影响,总出货量相比去年同期大幅下降11左右。其中苹果和三星表现稳健,相较去年均有三天五款新车传统豪华品牌打响电动化反击战财联社北京4月21日讯(记者刘阳),电动化赛道,豪华品牌正火力全开。4月21日,林肯品牌首款纯电动概念车LincolnStar全球首秀。根据规划,2025年,林肯将推出三款全新纯电安森美半导体将启用新加坡配送中心分发中国工厂货物品玩4月21日讯,据爱集微报道,由于安森美位于上海的全球配送中心关闭,安森美决定通过新加坡配送中心分发中国三大工厂的货物。安森美曾在4月18日表示,受到疫情影响,其中国全球配送中心抄五菱作业大获成功!奇瑞新晋黑马诞生新能源销量破纪录日前,奇瑞公布了年度首份成绩单,数据显示,1月份,奇瑞终端实销107710辆,同比增长20,创历史同期新高新能源汽车销量为20635辆,同比上涨179。6。分品牌来看,奇瑞品牌1月百公里氢耗低至0。65公斤,3分钟超快补能,长安深蓝发布国内首款量产氢电车型北京商报讯(记者刘晓梦)4月21日,长安汽车正式发布长安深蓝C385,共分为纯电增程及氢电三种动力版本。其中氢电版本为国内首款量产的氢电车型,馈电氢耗低至0。65公斤100公里以下单月破9000,销量直逼BBA,小鹏P7到底凭什么?众所周知,在如今汽车电动化快速发展的路上,总会出现一些因为自身产品和实力过硬的选手。其中,小鹏P7便是以如此角色迅速成为了国内新能源汽车的代表之一。根据3月份新能源汽车销量显示,小傍上百度切入自动驾驶,新能源车概念股华锋股份两连板,股东批量减持在路上记者张艺编辑连续两个涨停后,华锋股份(002806。SZ)4月18日晚间抛出了一份上修业绩的公告。值得注意的是,华锋股份近日利好不断,前有子公司拿下重大销售合同,后有与百度旗下阿波马斯克称特斯拉FSD测试车辆超10万特斯拉CEO埃隆马斯克当地时间周日表示,该公司已向美国10万多用户推出了其全自动驾驶(FSD)软件的测试版本。这一最新数据显示,特斯拉已经显著加快了其FSD测试项目。马斯克在接受T四月才是大乱斗,还有五款新机即将发布,哪款能给你换机的动力呢大家好,我是三月。本以为上个月就已经是手机厂商比较忙的一个月了,红米K50,华为P50E,荣耀magic4,realmeGTNeo3,可是谁能想到四月份比三月份的新机更多。接下来的淘宝直播推出带货直播认证考试,打造专业的中间人经济近日,淘宝直播联合阿里巴巴认证共同组织互联网营销师直播销售员认证考试,让带货主播专业化。带货主播需要考试的内容根据互联网营销师国家职业技能标准要求设计,分为理论考试和技能考核(实操网约车Uber不再要求司机乘客戴口罩侨报网报道根据网约车公司优步(Uber)周二发出的一封群发电子邮件,优步的乘客和司机不再需要戴口罩。根据pix11报道,此举发生在一名联邦法官撤回疾病控制和预防中心(CDC)的联邦
体验汽车黑科技,比亚迪DiLink4。0(5G)智能座舱,难怪汉EV热销如果说盘点一款中国品牌冲击高端市场的有代表性的汽车,也许会有不少,而如果把这个范围缩小到具备月销过万实力,那我们能找到的也许就寥寥无几了。比亚迪汉就是其中一款,它目前的售价区间覆盖空间大性价比高,深圳到四川百公里油耗5L多,难怪车主买起亚傲跑我的家乡在四川绵竹,这里最出名的应该是白酒,剑南春大家应该不陌生,离我们家不远,但是我和妻子的工作却在遥远的深圳郊区,今年是在深圳奋斗的第6个年头,也是离开家的第六年,跟家人总是聚国产汉兰达来了,全新第二代GS8焕新,轴距超2。9米搭丰田THS混动写在前面SUV在这些年的中国市场上,可谓如鱼得水,随着国内消费市场的消费需求变化,SUV市场销量比例直逼轿车,成为与轿车市场并驾齐驱的细分市场。而随着SUV市场的不断繁荣和国内消费长安汽车9月销量发布,蓝鲸车型继续热卖,CS75PLUS势头火爆日前,我们通过长安汽车官方了解到长安汽车在9月份的销量情况。根据长安汽车集团发布的最新销量数据显示长安汽车9月销量为18。8万辆,同比下降8。41。今年前9个月,长安汽车集团累计销第二代CS55PLUS上市,10。69万起搭蓝鲸发动机,百公里油耗5。9L对于长安CS55这款车,估计很多人并不陌生,作为国内最畅销的紧凑型SUV之一,自推出市场后,它就成为热销车,尤其是随着CS55PLUS车型的加入,更让这个系列车型如虎添翼。以今年上IOS12正式版小问题多多,12。1beta版马上就来了iOS12正式版才刚推送不久,苹果就马上开始新版本的测试工作。19号凌晨,苹果面向开发者推送了iOS12。1beta,安装包大小达到了2。3GB左右,要知道之前都是几百兆的测试版更还在犹豫升级ios12。0?来看看使用一周的感受吧从18号推送ios12。0正式版至今,也过去一周了。小编也在第一时间升级了,现在来说说我的使用感受。从一升级完,我就发布了11。3和12。0的对比视频,也发布了文章说遇到的小bug500元档的较量小米5X对比魅蓝Note6,同是骁龙625,差别却挺大骁龙625处理器,作为一款神U,出过的机型真的是多。本人使用过的就有努比亚Z11minis,红米4高配,红米note4x,魅蓝note6。现在又买了一部小米5X。说实话,这是一颗很7月SUV销量销量出炉哈弗H6夺第98冠第二让人意外,日系车大卖日前,中国汽车工业协会和乘联会分别公布了2021年7月份的产销数据,作为传统的汽车销售淡季,7月份迎来双下滑。根据乘联会公布的数据显示7月份国内狭义乘用车市场销量达150万辆,同比SUV和新能源领跑市场,MPV也在崛起,中国品牌轿车命运会如何近几年中国品牌的发展有目共睹,在SUV领域,哈弗H6连续十年夺魁,并拿下了近百个月(第98个)的SUV销量冠军,领跑SUV市场,产品种草300余万,可谓根深叶茂,并且这一优势还在持吉利汽车7月销量出炉总销量99275辆,星越L上市10天破6000辆进入7月份后,各大汽车厂商开始纷纷公布各自产销数据。在8月6日晚些时候,吉利汽车也公布了集团公司7月份的销量情况。根据官方数据显示2021年7月吉利汽车销量接近10万辆大关,达到了